Stitch four voice takes into one 3-minute Short with audio.parts
Timeline audio.parts joins up to 20 gapless narration slices inside one render, no re-synthesis. Build a 180-second Short from four takes, with the math.

Use audio.parts[] when narration comes as separate takes and you want one 180-second Short. Each part is a url plus an optional source_in and duration; up to 20 parts are joined gaplessly in the sample domain, with no re-synthesis. audio.url and parts are mutually exclusive. YouTube's Shorts page, read on 2026-10-06, caps a Short at three minutes. Timeline details are from the Sume docs of the same date.
What does the body look like?
Declare audio.duration_seconds as 180 and make the part lengths add up to at least that, or the job is refused with audio_parts_shorter_than_duration. Place the video slots on the joined timeline.
{
"audio": {
"parts": [
{"url": "https://media.sume.com/artifacts/artf_demo/t1.wav", "duration": 45},
{"url": "https://media.sume.com/artifacts/artf_demo/t2.wav", "duration": 45},
{"url": "https://media.sume.com/artifacts/artf_demo/t3.wav", "duration": 45},
{"url": "https://media.sume.com/artifacts/artf_demo/t4.wav", "duration": 45}
],
"duration_seconds": 180
},
"video": [{"source_url": "https://media.sume.com/artifacts/artf_demo/b.mp4",
"start": 0, "duration": 180}]
}When should I use Timeline audio instead?
If the merged narration is reused in several renders, mint it once with Timeline audio concat at $0.01 per job. It returns offsets in segments[] that you can use to re-base each video[].start. For a one-off render, audio.parts[] avoids the extra job.
What is the cost?
A 180-second render is three billable minutes at $0.10, so $0.30. Run the unbilled plan call to confirm billable_minutes is 3.
Sources
Related posts
More in Developers
- Sume 401 halfway through a batch: stop every worker, do not retry
A 401 on a Sume submit means a missing, malformed or revoked key. The SDK does not retry it, and neither should you. Python sample that keeps job ids.
- Sume SDK idempotencyKey: null sends no key, so POST retries stop
subscribeFormatRun mints a UUID Idempotency-Key by default. Pass null and the create call carries no key, so the SDK will not retry it on a 429 or 5xx.
- Sume SDK maxRetries: 0 when your job queue already retries the call
The SDK retries 408, 429 and 5xx twice by default. Under a queue with five attempts that is up to 15 tries. Set maxRetries to 0 and let one layer retry.
- Sume STT mode sync: transcribe a short clip in one request
Send mode sync with wait_timeout_seconds up to 30. A short clip answers 200 with the finished job. A longer one answers 2xx with the queued job to poll.
Written by Sume