Timeline render warnings: padded or looped short sources explained
A Timeline 1.0 slot longer than its source renders with a soft warning, not a failure, and /plan cannot predict it. Read warnings[] and probe clips first.

When a Timeline 1.0 slot asks for more seconds than its source has, the render still succeeds and warnings[] in the result reports it. The docs list padded or looped short sources as soft warnings, not failures, and say POST /v1/timeline-1.0/plan cannot predict them.
This comes from the Timeline 1.0 docs, read 2026-09-30. The docs do not spell out warning code strings for padding or looping, so match on what you see in your own results.
Where do I see the warning?
A finished job's GET /v1/jobs/:id/result is kind: timeline_render with video_url, duration_seconds, segment_count, billable_minutes and optional warnings[]. The docs group these together as soft warnings: padded or looped short sources, snapped transitions, and ignored still motion.
Why can't the plan catch it?
/plan runs schema checks, Sume-host URL checks and the pure compiler. It returns duration_seconds, segment_count, billable_minutes and a filtergraph_summary, but it does not download media, so it does not know how long your clips are. Probe the sources yourself first.
curl -X POST https://api.sume.com/v1/video-inspect \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: probe-source-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/short.mp4",
"frames": false
}'How do I avoid the padding?
Compare each slot's duration (plus source_in) with the probed clip length, and shorten the slot or pick a longer source. Note that stills are static holds, and a motion field on a still is accepted and ignored, which produces motion_ignored.
| Situation | Outcome |
|---|---|
| Slot longer than its source | Soft warning, job succeeds |
| Transition snapped to a frame | Soft warning, job succeeds |
| motion on a still | motion_ignored warning |
| video[0].start is not 0 | Refused: timeline_must_start_at_zero |
Sources
Related posts
More in Developers
- Token bucket vs fixed window: what a reset header means
Anthropic says its limits replenish continuously; Sume's docs call ratelimit-reset the seconds until the window resets. How to pace a client for each.
- Trim and conform a clip to 1080x1920 at 30 fps in one call
video-trim takes an optional output {width, height, fps} that conforms on the way out, exact precision only. Width and height 256-2160, fps 24, 25, 30 or 60.
- Vercel rewrite to an external API times out at 120 seconds
Vercel proxied rewrites to an external destination time out at 120 seconds with ROUTER_EXTERNAL_TARGET_ERROR. A Sume async submit returns at once.
- Video 1.0 4k resolution error: only 720p and 1080p on that URL
Video 1.0 accepts 720p (default) and 1080p from its legacy vocabulary and rejects 4k. For 4K send a sume/auto request to POST /v1/videos instead.
Written by Sume