Sume audio_url_and_parts_exclusive: pick one spine for a VO Short
Sume timeline rejects audio.url together with audio.parts. Send a single url spine, or up to 20 parts[], never both; the hint is use_audio_url_or_audio_parts.

audio_url_and_parts_exclusive means your Timeline 1.0 audio object has both url and parts[]. Keep exactly one: url for one finished voice track, parts for up to 20 gapless slices that Sume joins inside the render. The next_action hint is use_audio_url_or_audio_parts.
This tends to appear when a script merges a pre-joined voice file with the original slices it came from. For a Short capped at 3 minutes (YouTube Help, read 2026-10-05), voice slices are common: a hook line, three beats and a call to action, each recorded or generated separately.
Choosing url or parts
Per the Timeline 1.0 docs, parts[] takes at most 20 slices, each a url plus optional source_in and duration, joined in the sample domain with no re-generation of speech. A single url is simpler when the file is already whole. If you need the joined file as a reusable asset, the timeline audio route concatenates parts into a wav or mp3 for $0.01 per job.
| Question | audio.url | audio.parts[] |
|---|---|---|
| How many files | 1 | 1 to 20 |
| In-point | audio.source_in | per-part source_in |
| Sum shorter than output | not applicable | audio_parts_shorter_than_duration |
| Reusable joined file | no | use timeline-audio concat |
A valid parts body
This renders a 20 second output from two voice slices. Declared part lengths must add up to at least duration_seconds, otherwise the schema returns audio_parts_shorter_than_duration when every part declares its length.
{
"audio": {
"parts": [
{ "url": "https://media.sume.com/artifacts/artf_demo/hook.wav", "duration": 8 },
{ "url": "https://media.sume.com/artifacts/artf_demo/body.wav", "duration": 12 }
],
"duration_seconds": 20
},
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/a.mp4", "start": 0, "duration": 8 },
{ "source_url": "https://media.sume.com/artifacts/artf_demo/b.mp4", "start": 8, "duration": 12 }
]
}Check before you pay
Send the same body to POST /v1/timeline-1.0/plan. It runs the schema and the compiler without creating a job or reserving credits, and it needs no Idempotency-Key. The render itself needs one. A plan cannot predict short-source pad or loop warnings, so expect those only from the real render result.
How the error is raised
The check lives in the request schema, so it fires at admit time, before any media is downloaded and before credits are reserved. The same refusal is returned by /plan and by render, with the field path pointing at audio.parts. That makes it safe to wrap in a test: a unit test that posts the two-field body to /plan and expects a 400 with this code is cheap and never bills.
Two neighbouring rules are worth knowing. With parts, a top-level audio.source_in is refused as audio_source_in_requires_single_spine, because it would be unclear which slice it seeks into. And with url, there is no per-slice length check, since there are no slices.
A quick audit of an existing builder
If a pipeline builds the audio object in several steps, search for the code path that sets parts after url has already been filled. The simplest repair is to build the object from one decision: if there is more than one voice file, set parts; otherwise set url. Never set both and then delete one downstream, because the intermediate object is what ends up in logs and retries.
When not to use parts
If you only want to cut one long voice file, do not slice it into parts; use a single url with audio.source_in. The in-point is allowed only in that single-spine form, which is the subject of a different error code, audio_source_in_requires_single_spine.
Sources
Related posts
More in Media tools
- Sume timeline audio_url_required: a silent Short needs mode silence
audio_url_required means the timeline has no audio.url, no audio.parts and no mode. Add a spine, or set audio.mode to silence with a duration_seconds.
- compose 400: stack keys and overlay keys mixed in one layout
compose layout keys are stack (split, image_region, ratio) or overlay (position, width_ratio, margin_ratio). Mixing them is a 400. Match layout to operation.
- Timeline output fps for a Short: 24, 25, 30 or 60, and the warning
Timeline 1.0 output.fps accepts 24, 25, 30 or 60. Leave it out and the render follows the sources. Read output_fps_resamples_sources before you upload.
- Timeline output size for 21:9 and 16:9 clips: default is 1080x1920
Sume Timeline renders 1080x1920 portrait unless you set output.width and height: even integers, 256 to 2160. Sizes that work for 21:9 and 16:9 AI clips.
Written by Sume