Timeline audio concat limits: 20 parts, 1,800 s, one channel layout
Timeline audio concat accepts 1 to 20 parts, outputs up to 1,800 seconds and needs one channel layout. Limits, refusal codes and a request that works.

The limits
Timeline audio's concat joins Sume-hosted audio into one file. The docs set the rules: parts[] has between 1 and 20 ordered items, produced audio is at most 1,800 seconds, and parts must share one channel layout.
| Limit | Value | If you break it |
|---|---|---|
| Parts | 1 to 20 | Request refused |
| Output length | Up to 1,800 s | Refused |
| Channel layout | One shared layout | audio_parts_channel_mismatch |
| Source location | This workspace's media.sume.com audio | unsupported_media_source or source_not_found |
| Price | $0.01 flat per job | None |
A request that works
Each part is { url, source_in?, duration? }. source_in and duration trim a part before it joins.
{
"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 }
]
}Joining more than 20 clips
Join in two rounds. Concat up to 20 parts into one file, repeat for the next group, then concat the results. Keep wav so the second round is lossless.
- Round one: 20 parts per job, as many jobs as you need.
- Round two: concat the outputs, up to 20 at a time.
- Watch the 1,800-second cap on every round.
- Use one Idempotency-Key per job so retries are safe.
Reading the result
The result is kind: timeline_audio with an audio_url, a duration_seconds value and segments[] with index, start and duration_seconds. Those are offsets for each part in the joined file, which you use to re-base video timings.
The default mode is async. Pass sync to wait up to 30 seconds for a finished job, or take the 202 and poll /v1/jobs/:id/status.
Trimming parts with source_in and duration
Each part can be trimmed at join time: source_in is where to start inside the part, and duration is how long to take. That lets you drop a breath or an extra pause without a separate edit, and keeps the join in one flat-priced job.
Mind units: the docs example uses seconds, with source_in 0.1 and duration 1.8.
Takeaway
Concat is cheap, flat-priced and sample-exact. Plan for 20 parts and 1,800 seconds a job, keep one channel layout, and run it in rounds for longer material.
Sources
Related posts
More in Developers
- Hook and full cut from one track: overlapping Timeline audio splits
Timeline audio split ranges may overlap, up to 20 per job at $0.01. Cut a 15-second hook and the full track from one song or voice-over in a single call.
- duck_requires_audio_spine: no music ducking under silence mode
Timeline refuses soundtrack.duck_db when audio.mode is silence, since there is no voice to duck under. The fix, the other silence rules, and a check.
- timeline_must_start_at_zero and transition_on_first_segment fixes
Timeline 1.0 needs video[0].start to be 0 and no transition on slot 0. How to open on a fade or a later in-point, with a Python builder that runs.
- Timeline segment_overlap: set start times when clips cross-fade
Sume Timeline returns segment_overlap when a slot starts before the previous one ends minus the fade. The rule, the fix, and a Python check.
Written by Sume