audio_parts_shorter_than_duration: fix a Timeline audio spine
Timeline 1.0 refuses audio.parts[] whose declared lengths sum to less than audio.duration_seconds. Add part length, lower the duration, or use silence mode.

audio_parts_shorter_than_duration means the declared lengths of audio.parts[] add up to less than audio.duration_seconds. For example, two 10-second parts under a 24-second duration fail. Lengthen or add parts, or lower duration_seconds to the sum.
What are the ways out?
The Timeline docs list these options.
| Fix | Notes |
|---|---|
| Add or lengthen parts | Up to 20 parts, each { url, source_in?, duration? } |
Lower audio.duration_seconds | Range 1 to 1800; the render is that long |
| Use one spine file | audio.url; exclusive with parts |
| Declare silence | audio.mode: "silence", then no url, parts, gain_db or source_in |
How is the sum counted?
The docs say "declared part lengths", so set duration on each part when the file is longer than the excerpt you want, and add source_in for the in-point. Parts are joined in the sample domain with no re-TTS.
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: timeline-parts-001" \
-d '{
"audio": {
"parts": [
{ "url": "https://media.sume.com/artifacts/artf_demo/line1.wav", "duration": 12 },
{ "url": "https://media.sume.com/artifacts/artf_demo/line2.wav", "duration": 12 }
],
"duration_seconds": 24
},
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4", "start": 0, "duration": 24 }
]
}'Is there an unbilled check?
Yes: POST /v1/timeline-1.0/plan runs schema checks and the compiler without creating a job. The docs do not say which refusals it returns, so treat it as a preflight, not a guarantee.
How does the job run?
Timeline jobs default to mode: "async". Pass mode: "sync" to wait up to 30 seconds for a 200 finished job, or you get 202 and poll GET /v1/jobs/:id/status and GET /v1/jobs/:id/result; there is no separate GET for the audio or render job. Idempotency-Key is required on the render and audio jobs, and every URL must already be this workspace's media.sume.com audio or video. The reserve for a render is ceil(audio.duration_seconds / 60) minutes.
Hosted MCP has timeline_audio and timeline_create; the flow is the tool, then jobs_wait, then the result tool. Details are in the Timeline audio docs and Timeline 1.0 docs.
Sources
Related posts
More in Media tools
- Combine more than 20 audio files: nest the concat jobs
Timeline audio concat takes 1 to 20 parts per job. For 45 files, concat in batches of 20 or fewer, then concat the batch outputs. Four jobs, $0.04 flat.
- Extract audio from a video URL: why example.com is refused
Audio detach only reads a video already on this workspace's media.sume.com. An outside URL fails unsupported_media_source, so import it first, then detach.
- Lyria 3.5 outputs MP3 or WAV: what you get from Sume music
Google lists MP3 by default or WAV for Lyria 3.5. Sume's music request has no format field and returns an audio file; timeline audio can make a wav.
- Start a video's audio 45 seconds into a song: audio.source_in
Timeline 1.0's audio.source_in sets the in-point into a single audio spine. Output length stays duration_seconds, and it is illegal with parts or silence mode.
Written by Sume