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.

4 min readSume
All posts

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.

audio.parts versus the audio job (https://docs.sume.com/models/timeline-audio, read 2026-09-30)
NeedUseExtra job
Join only for this renderaudio.parts[] on the renderNo
Reusable joined filePOST /v1/timeline-1.0/audio concatYes, $0.01 flat

Sources

Related posts

More in Developers

All Developers posts

Written by Sume