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.

4 min readSume
All posts

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.

Ways to satisfy the audio spine on Timeline 1.0, from the Sume docs read 2026-09-30.
FixNotes
Add or lengthen partsUp to 20 parts, each { url, source_in?, duration? }
Lower audio.duration_secondsRange 1 to 1800; the render is that long
Use one spine fileaudio.url; exclusive with parts
Declare silenceaudio.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

All Media tools posts

Written by Sume