Timeline refuses 9 chained fades: too_many_chained_transitions

Sume Timeline 1.0 refuses more than 8 adjacent fades with too_many_chained_transitions. How transitions are validated, and the hard-cut fix.

4 min readSume
All posts

A Sume timeline with more than 8 adjacent fades is refused with too_many_chained_transitions. A 10-slot sequence where every slot after the first carries a transition has 9 of them in a row, so it fails. Insert a hard cut by leaving transition off one slot in the middle, and the same render is accepted.

The transition rules

Transitions go on video[].transition and only on slots after the first. A transition on video[0] returns transition_on_first_segment. The type is one of six values: fade, wipeleft, wiperight, slideup, slidedown, dissolve.

Transition limits (Sume docs, read 2026-10-09)
RuleRefusal code
Not on video[0]transition_on_first_segment
Duration at most 1 second and at most 50% of the shorter neighbortransition_too_long
Duration must align to the frame ratetransition_not_frame_aligned
More than 8 adjacent fadestoo_many_chained_transitions
Slots overlap past the crossfadesegment_overlap

Counting a chain

Every transition links two slots. In a timeline of N slots there can be N - 1 transitions, so 9 slots is the largest sequence that can be faded end to end. Ten slots with transitions on slots 2 through 10 is a chain of 9. Take the transition off slot 6 and the chain splits into 4 and 4 around a hard cut. Both halves are under the limit.

The docs say to insert a hard cut. They do not say the cut has to be in the middle, only that no more than 8 fades may be adjacent.

{
  "video": [
    { "source_url": ".../s1.mp4", "start": 0,  "duration": 3 },
    { "source_url": ".../s2.mp4", "start": 3,  "duration": 3,
      "transition": { "type": "fade", "duration": 0.25 } },
    { "source_url": ".../s3.mp4", "start": 6,  "duration": 3 }
  ]
}

Timing details that interact

Declared starts are authoritative. The compiler compensates for the crossfade and never pre-shifts a slot, so a 0.25-second fade at the boundary between a slot ending at 6 and one starting at 6 is accounted for by the compiler. A slot's duration must be at least 0.2 seconds, which is also why a 0.25-second fade into a 0.4-second neighbor is refused: 0.25 is more than 50% of 0.4.

Fades at the very start and end of the output are separate: output.fade_in_seconds and output.fade_out_seconds accept 0 to 5 seconds, and their sum must not exceed the output length (edge_fades_exceed_output).

Alternatives to a long fade chain

A hard cut is the simplest fix, but it is not the only one. You can mix transition types: the limit counts adjacent fades, and the docs apply it to the chain of transitions on consecutive slots, so the safest reading is to break the chain with a slot that has no transition at all. A wipe or slide may be counted as a transition for this purpose too, so do not assume a change of type resets the count.

If a slideshow needs a soft look everywhere, consider fewer, longer slots. Nine slots of 5 seconds each is a 45-second spine and one rounded-up minute at $0.10, while eighteen slots of 2.5 seconds would need a hard cut every eighth slot. Use the free plan call to confirm that a layout compiles before you submit it.

Check before you spend

Both refusals happen at admit, and the unbilled POST /v1/timeline-1.0/plan runs the same compiler, so you can test a slot list for free. A render that passes is billed at $0.10 per output minute, rounded up.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume