edge_fades_exceed_output: fade in and out too long for the video
Timeline 1.0 refuses fades that are too long: each edge fade is 0 to 5 seconds and fade in plus fade out must not exceed the output length.

Timeline 1.0 returns edge_fades_exceed_output when output.fade_in_seconds plus output.fade_out_seconds is longer than the output. Each value is limited to 0 to 5 seconds, and the sum has to stay within audio.duration_seconds. Shorten one of them, or lengthen the render.
The limits come from the Timeline docs, read 2026-10-01.
What are the fade limits?
| Field | Limit | Refusal code |
|---|---|---|
output.fade_in_seconds / fade_out_seconds | 0-5 s each; sum <= output length | edge_fades_exceed_output |
soundtrack.fade_out_seconds | Up to 10 s; not longer than the spine | soundtrack_fade_exceeds_output |
video[].transition duration | Up to 1 s and 50% of the shorter neighbour | transition_too_long |
Why does a 6-second fade fail on a long video?
The 5-second cap is per edge, independent of how long the video is. A fade of 6 seconds is outside 0 to 5 even on a ten-minute render. A short render hits the other rule: on an 8-second output, a 5-second fade in and a 4-second fade out sum to 9, which is more than 8.
What about the music fade?
The optional soundtrack bed has its own fade_out_seconds, capped at 10. The docs list soundtrack_fade_exceeds_output for a fade longer than the spine, so a 10-second music fade on a 6-second render fails even though 10 is allowed in general. For ducking music under a voice, see Timeline duck.
How do I avoid the error before rendering?
Clamp in your own code before you submit: keep each edge fade at or below 5, and keep the sum at or below audio.duration_seconds. The unbilled plan call also runs the validation without creating a job or reserving credits.
One related note from the Descript changelog (September 17): smart transitions no longer fade in on the first scene, so a video does not open on black. In Timeline the first slot cannot carry a transition at all (transition_on_first_segment); an opening fade is set with output.fade_in_seconds.
Sources
Related posts
More in Developers
- Faded matte-black video look by API: raise the colorlevels black point
Sume's video filter allowlists colorlevels. Raising the output black point (romin, gomin, bomin) lifts pure black to dark gray for a faded, matte look.
- fal content_policy_violation 422 vs Sume generation_rejected
fal returns content_policy_violation as a non-retryable 422. Sume's closest job error category is generation_rejected: inspect events and fix the input.
- falrun.com firewall allowlist vs Sume API and media hosts
fal says to allow fal.run, queue.fal.run and the falrun.com backups. For Sume, allow api.sume.com and media.sume.com; webhooks come to your own HTTPS host.
- fal generation_timeout 504 error: what to do on Sume
fal returns generation_timeout as a 504 typed error. Sume has a generation_timeout category; the documented action is to poll status or retry later.
Written by Sume