Join voiceover clips inside one timeline render with audio.parts
Timeline 1.0 takes up to 20 gapless audio.parts slices with source_in and duration. Skip the timeline-audio job when the join is only for one render.

Put the voiceover slices in audio.parts[] of POST /v1/timeline-1.0/render: up to 20 gapless parts, each { url, source_in?, duration? }, joined in the sample domain with no re-synthesis. Use the separate timeline-audio job only when you need the joined file as a reusable artifact.
Everything here is from the Timeline 1.0 and Timeline audio docs, read 2026-09-30.
What does the request look like?
audio.duration_seconds (1 to 1800) is still the output length. audio.parts and audio.url are exclusive. The declared part lengths must add up to at least duration_seconds, or the render is refused with audio_parts_shorter_than_duration.
curl -X POST https://api.sume.com/v1/timeline-1.0/render \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: parts-render-001" \
-d '{
"audio": {
"duration_seconds": 10,
"parts": [
{ "url": "https://media.sume.com/artifacts/artf_demo/line1.wav", "duration": 4 },
{ "url": "https://media.sume.com/artifacts/artf_demo/line2.wav", "source_in": 0.1, "duration": 6 }
]
},
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/scene.mp4", "start": 0, "duration": 10 }
]
}'When do I still need the timeline-audio job?
Run POST /v1/timeline-1.0/audio (operation: "concat") when the joined file is reused elsewhere, for example as the audio.url of another render. It returns one audio_url and segments[] with the concat offsets to re-base video[].start. It is $0.01 flat per job.
Which mistakes does the render refuse?
Both url and parts returns audio_url_and_parts_exclusive. source_in next to parts on audio is audio_source_in_requires_single_spine; put source_in inside each part instead.
| Need | Use | Extra job |
|---|---|---|
| Join only for this render | audio.parts[] on the render | No |
| Reusable joined file | POST /v1/timeline-1.0/audio concat | Yes, $0.01 flat |
Sources
Related posts
More in Developers
- Timeline 1.0 limits: 200 slots, 1800 s, 20 audio parts, 8 fades
The numbers that cap one Timeline 1.0 render: 1 to 200 video slots, 1 to 1800 s of audio, 20 audio parts, 12-slot single strategy and 8 chained fades.
- 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.
- 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.
Written by Sume