soundtrack_shorter_than_spine: loop the music bed in Timeline
Timeline warns soundtrack_shorter_than_spine when the music bed is shorter than the audio. Set soundtrack.loop to true; gain, fade and duck defaults inside.

The soundtrack_shorter_than_spine warning means the music file you passed as soundtrack.url is shorter than audio.duration_seconds, so the bed stopped partway through the render. Set soundtrack.loop to true and the bed repeats until the spine ends. That is the whole fix; the rest of this page is what the other soundtrack fields do, so you do not trade one problem for another. Everything here comes from the Timeline 1.0 docs and its OpenAPI schema.
What does the soundtrack object accept?
A required url (a Sume-hosted HTTPS file) and four optional fields. Defaults matter: the bed sits at -16 dB under a spine unless you change it, and it stops dead at the end unless you add a fade.
| Field | Range | Default and behavior |
|---|---|---|
url | Sume-hosted HTTPS | Required |
gain_db | -60 to 12 | -16, a bed level under a spine |
loop | true or false | Off; a short bed stops partway and the render warns |
fade_out_seconds | 0 to 10 | 0; the bed stops dead |
duck_db | 0 to 20 | 0; needs a real spine, rejected with audio.mode silence |
Why did my render finish with a warning instead of failing?
The Timeline docs describe soft warnings, including padded or looped short sources, in the job's warnings[]. The render completed; the warning tells you the bed ran out. Read warnings[] on the result before you publish, because a silent last third of a video will not raise an error.
When is looping the wrong fix?
When the bed has a clear start and end, such as a 30-second track with an intro and a final hit. Looping repeats that arc. For a 30-second video, generate a 30-second track instead: the Music Router has no duration field, but Music 1.0 says to steer length in the prompt ("a 30-second track"). Loop only for ambient beds that are meant to repeat, and add fade_out_seconds so the last pass does not cut off.
What does a render with a looped bed look like?
Only the soundtrack block is shown; the rest of the Timeline body (audio, video[], output) is unchanged from the docs example.
{
"soundtrack": {
"url": "https://media.sume.com/artifacts/artf_demo/bed.mp3",
"gain_db": -18,
"loop": true,
"fade_out_seconds": 3,
"duck_db": 10
}
}Sources
Related posts
More in Developers
- SQS FIFO 5-minute dedup vs a Sume Idempotency-Key: which wins?
SQS FIFO dedupes for only 5 minutes. A Sume Idempotency-Key covers the create call itself, so use both when a worker can retry after the window.
- StepAudio 3 Music preview is free, then retired: keep your API stable
stepaudio-3-music-preview is free for a limited time, then retired for a paid version. How to keep a music integration stable, and which Sume ids stay put.
- Stripe wants enabled_events trimmed; Sume sends only terminal events
Stripe advises subscribing only to needed event types. Sume sends only terminal job and run events, with the URL set on each request. Here is the mapping.
- Stripe resend keeps auto-retries; Sume redeliver uses no attempt
Stripe's manual resend does not cancel automatic retries and works 15 to 30 days. Sume redeliver sends a fresh signature after ten attempts and keeps the URL.
Written by Sume