Timeline too_many_chained_transitions: 8 fades, then a hard cut

Sume Timeline allows at most 8 adjacent fades and returns too_many_chained_transitions past that. Each fade is 1 s or less and 50% of the shorter slot. The fix.

5 min readSume
All posts

Sume Timeline accepts at most 8 chained fades. A ninth adjacent transition returns too_many_chained_transitions, and the fix is to leave one slot's transition out, which makes a hard cut and starts the count again.

Transition rules

Transition limits, as of 2026-10-08 (docs.sume.com/models/timeline)
RuleLimit
Allowed onSlots after the first only
Typesfade, wipeleft, wiperight, slideup, slidedown, dissolve
Duration1 s or less, 50% of the shorter neighbor at most, at least one frame
Adjacent chain8 at most
Output edge fade in and out0 to 5 s each, sum no larger than the output

Breaking up a long fade chain

In a 20-shot trailer, fade between shots 1 to 8, leave shot 9 without a transition, then fade again. The cut reads as a beat, which suits a trailer. Declared start values stay authoritative, because the compiler compensates for the overlap of a fade and does not pre-shift.

Short slots need short fades. A 0.4 second slot with a neighbor of 1 second can carry a fade of 0.2 seconds at most, since the cap is half of the shorter slot.

Related errors

  • invalid_segment_timing or segment_overlap: starts do not increase, or slots overlap past the fade.
  • edge_fades_exceed_output: the start and end fades are longer than the output.
  • duck_requires_audio_spine: soundtrack.duck_db was set with silence.

Counting a chain

Count adjacent slots that each carry a transition. Slots 2 through 9 with a fade each make a chain of eight, which is allowed. Put a fade on slot 10 as well and the chain is nine, which is refused. Leaving slot 10 without a transition makes a cut between slot 9 and 10, and slot 11 can start a new chain.

A style point: fades on every cut feel soft and slow. A mix of mostly hard cuts with a fade at a scene change is easier to watch and avoids the limit.

Check before you send

A quick script can count the run of transitions in your video[] array and warn at eight. It takes a few lines, and it saves a failed request on a 100-slot montage.

A small checker

The check is a loop over the slots. Count consecutive entries that have a transition and report the first index where the count passes eight.

def first_overlong_chain(video, limit=8):
    run = 0
    for i, slot in enumerate(video):
        run = run + 1 if slot.get("transition") else 0
        if run > limit:
            return i
    return None

Fade length

The fade duration must be 1 second or less and at most half of the shorter neighbor. For a 24-shot trailer with 1.25-second shots the largest fade is 0.625 seconds, so ask for 0.5. Keep the value inside the stated limits.

Why the cap exists

Each fade overlaps two neighbors, and a long chain of overlaps makes the filter graph for the render large. The limit keeps requests predictable. The docs do not give a deeper reason, so treat the number as a contract: 8 chained fades are fine, 9 are refused, and a hard cut resets the count.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume