16 AI shots in one Sume Timeline render: the 8-fade cap
A 16-shot cut fits one Timeline render, but fades are capped at 8 in a row and renders chunk past 12 slots. Plan the cuts, with the doc limits.

Sixteen shots fit in one Timeline render, but you cannot put a fade between every pair: Sume refuses more than 8 adjacent fades and asks you to insert a hard cut. A render with more than 12 slots is also chunked by default.
This matters when you rebuild a 16-keyframe sequence, like the one Luma lists for Ray 3.2, out of 16 separate clips.
The limits that apply
From the Timeline 1.0 docs: video[] takes 1 to 200 slots, audio.duration_seconds is 1 to 1800, video[0].start must be 0, and later starts must increase. A transition is allowed only on slots after the first. Duration is at most 1 second, at most 50% of the shorter neighbor, and at least one output frame.
| Rule | Value | Refusal code |
|---|---|---|
| Slots per render | 1-200 | n/a |
| Adjacent chained fades | 8 at most | too_many_chained_transitions |
| Transition on the first slot | Not allowed | transition_on_first_segment |
| render.strategy single | 12 slots at most | render_strategy_unsafe |
| Default strategy | auto, chunks past 12 segments | n/a |
| Transition length | up to 1 s, up to 50% of the shorter neighbor | transition_too_long |
Plan 16 slots with 15 joins
Sixteen slots make 15 joins. If every join were a fade, 15 adjacent fades would break the 8 limit. Insert a hard cut after at most 8 fades. One workable layout is 8 fades, one cut, then 6 fades, and one cut, which uses 14 fades across 15 joins with the cuts as natural scene boundaries.
Hard cuts are not a downgrade. Group the shots into scenes, fade inside a scene, and cut between scenes.
Leave the strategy on auto
With 16 slots you are above 12, so render.strategy: single is refused with render_strategy_unsafe. Leave the field out (default auto), or send chunked. The docs say auto chunks past 12 segments, so you do not need to split the job yourself.
Check it before you pay
POST /v1/timeline-1.0/plan is unbilled. It returns duration_seconds, segment_count, billable_minutes, estimated_cost_usd_micros and a filtergraph_summary, and it does not create a job. The render itself is priced at $0.10 per ceil(output minute). A plan cannot predict warnings about short sources that are padded or looped.
Every source_url must already be a media.sume.com artifact or asset in your workspace, and render needs an Idempotency-Key. Import generated clips first with POST /v1/media-imports.
curl -X POST https://api.sume.com/v1/timeline-1.0/plan \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{"audio":{"mode":"silence","duration_seconds":48},
"video":[{"source_url":"https://media.sume.com/artifacts/artf_demo/s01.mp4","start":0,"duration":3},
{"source_url":"https://media.sume.com/artifacts/artf_demo/s02.mp4","start":3,"duration":3,
"transition":{"type":"fade","duration":0.25}}]}'What a 16-shot cut costs
A 16-shot cut of 48 seconds bills one ceil(48/60) = 1 minute, so $0.10 for the render. The clips themselves are separate video jobs. Mixed frame rates across clips are the usual trouble: if you omit output.fps the job follows the sources, and a mismatch warns with output_fps_resamples_sources.
A layout you can paste
Index the 16 slots 1 to 16. Slot 1 has no transition. Give slots 2 to 9 a 0.25 second fade (8 fades in a row, the maximum). Slot 10 has no transition field, which makes a hard cut. Give slots 11 to 15 a fade, and slot 16 a hard cut or a fade of your choice, since the chain was already broken at slot 10. Keep each fade at or under 1 second and under half the shorter neighbor, so a 0.25 second fade between two 3-second slots is safe.
If a render is refused with too_many_chained_transitions, count the adjacent fades and break the run with one cut. If it is refused with transition_too_long, shorten the fade, not the slot.
Timing arithmetic
Starts are authoritative: you declare each video[].start, and the compiler compensates for the crossfade overlap without pre-shifting. For 16 slots of 3 seconds the starts are 0, 3, 6 and so on up to 45, and audio.duration_seconds is 48. The last slot must end within 0.5 seconds of the spine end, which here it does exactly.
A slot shorter than 0.2 seconds is refused, so very fast cutting at 24 fps needs at least 5 frames per slot. The docs also state that a transition must last at least one output frame.
Sources
Related posts
More in Developers
- Size a batch from generation_limits so no clip hits queue_full
Read accepted_generation_jobs_limit from a Sume submit response and slice your clips. A 50-clip batch leaves 2 for a later wave on Startup and 26 on Pro.
- Voice model updated in place with no API change: how to detect it
Nova 2 Sonic was refreshed in place in May with no API change. If a vendor can change your voice silently, log the model id and a canary clip. Sume code inside.
- spend_approval_queue_full 429: clear pending approvals, do not retry
A thread with too many pending spend approvals gets 429 spend_approval_queue_full. Resolve the pending ones first; a 503 store_misconfigured is for support.
- spend_confirmation_required 402 on Sume: why retrying will not help
A 402 spend_confirmation_required means a person must approve the spend first. It is not a balance error: retryable is false and next_action is fix_input.
Written by Sume