Concat 20 voice lines into one wav with timeline audio for 1 cent

Timeline audio concat joins up to 20 Sume-hosted audio parts into one gapless wav for a flat $0.01, and returns segment offsets to re-base your video slots.

4 min readSume
All posts

Timeline audio operation: "concat" joins 1 to 20 ordered parts into one gapless file for a flat $0.01 per job. The join is sample-domain, with no re-synthesis and no silence at the seams. Twenty narrated lines cost one cent to merge, not 20.

What comes back

The result is kind: timeline_audio with one audio_url, duration_seconds and segments[] with index, start and duration_seconds. Those offsets re-base video[].start in a Timeline 1.0 render.

Timeline audio concat, per docs read 2026-10-09
ItemValue
Parts per job1 to 20
Part fieldsurl, optional source_in, duration
Output formatwav (default, pcm_s16le) or mp3
Output length1,800 s maximum
Price$0.01 flat per job
Channel layoutsmust match: audio_parts_channel_mismatch

Request

Send parts and do not send a top-level url or ranges. All URLs must be audio already on media.sume.com. Import the clip first with POST /v1/media-imports so it sits on media.sume.com, send an Idempotency-Key header, then poll GET /v1/jobs/:id/status and read GET /v1/jobs/:id/result. The API rejects off-host URLs at admit, so a bad URL fails before any work runs.

curl -X POST https://api.sume.com/v1/timeline-1.0/audio \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: concat-001" \
  -d '{"operation":"concat","parts":[{"url":"https://media.sume.com/artifacts/artf_demo/line1.wav"},{"url":"https://media.sume.com/artifacts/artf_demo/line2.wav","source_in":0.1,"duration":1.8}]}'

Concat or audio.parts

If the join is needed only inside one render, use audio.parts[] on Timeline 1.0, which takes up to 20 slices too. Use concat when you want a reusable file, for example as image-to-video audio for an avatar.

Keep wav

mp3 is smaller but adds priming padding at every edge. If the file will be joined again or drives lip-sync, keep wav. For more than 20 lines, concat in groups and concat the results: 2 groups of 20 plus one final join is 3 x $0.01 = $0.03 for 40 lines.

Using the offsets

Take the segments[] start values from the result and use them as video[].start in the render, so each picture changes where its line begins. With 20 lines of 3 seconds each, the offsets are 0, 3, 6, up to 57, and the file is 60 seconds, which renders as 1 minute at $0.10. The merge plus the render is $0.11 in total. Every media job follows the same lifecycle: submit with an Idempotency-Key, receive a job, poll GET /v1/jobs/:id/status until it is ready, then read GET /v1/jobs/:id/result. A retry with the same key does not queue a second job, so a network error during submit never doubles a charge.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume