Three-minute Short: songs cap at 90 seconds, so plan the music bed
YouTube says most songs run up to 90 seconds in a 3-minute Short, some 60 or 30. Build the 180-second timeline with a voice spine and a looping, ducked bed.

If you put a commercial song under a 3-minute Short, plan for it to cover only part of the video. YouTube's help page says that on standard channels you can use most songs for up to 90 seconds in a 3-minute Short, but some tracks are limited to 60 or 30 seconds (read 2026-10-07). The safe build is a voice spine for all 180 seconds and a bed that loops, so no limit touches the structure.
Sume's Timeline 1.0 does exactly that: one audio spine, ordered video slots, and an optional soundtrack with loop, duck_db, and a closing fade.
The relevant YouTube lines
From YouTube's three-minute Shorts page. The page also says Shorts are square or vertical and up to three minutes for uploads after October 15, 2024 on standard channels.
| Item | Page says |
|---|---|
| Max length | 3 minutes |
| Standard channel music | most songs up to 90 s in a 3-minute Short; some limited to 60 or 30 s |
| Aspect | square or vertical |
| Eligible uploads | after October 15, 2024 |
Build the 180-second timeline
Set audio.duration_seconds: 180 (the limit is 1-1800), point audio.url at a narration track hosted on Sume, and place six 30-second slots. A soundtrack bed needs gain_db, loop: true, a fade_out_seconds of at most 10, and duck_db of 0-20 to dip under speech; ducking needs a real spine. The script prints a body you can send to POST /v1/timeline-1.0/render.
import json
clips = ["https://media.sume.com/artifacts/artf_demo/c%d.mp4" % i for i in range(1, 7)]
body = {
"audio": {"url": "https://media.sume.com/artifacts/artf_demo/vo.wav", "duration_seconds": 180},
"video": [{"source_url": u, "start": i * 30, "duration": 30} for i, u in enumerate(clips)],
"soundtrack": {
"url": "https://media.sume.com/artifacts/artf_demo/bed.mp3",
"gain_db": -14, "loop": True, "fade_out_seconds": 5, "duck_db": 10,
},
"output": {"width": 1080, "height": 1920},
}
print(len(body["video"]), "slots,", body["audio"]["duration_seconds"], "s")
print(json.dumps(body["soundtrack"]))Where the bed comes from
Music 1.0 writes a track from a prompt of up to 5,000 characters; it does not take a duration, so you describe the length in the prompt (the docs example is "a 2-minute track"). The render is $0.10 per ceil output minute, which is three minutes of assembly for this one, so $0.30 before the music and the clips.
This post does not claim a Sume-made track avoids any claim on YouTube. Whether a generated track can draw a Content ID match is not something the docs I read address; check your own upload.
Cheaper ways to handle the limit
If the Short is mostly narration, the bed does little work, and you can skip music for the stretch where a limit would apply. A bed that is quiet and generic is also less likely to be the thing a viewer remembers.
If the track is the point, a licensed song limited to 60 or 30 seconds means building the Short around those 30 to 60 seconds and ending the song-driven part there. Timeline 1.0 can place your own audio as the spine and a separate soundtrack under it, so the structure survives either way.
Sources
Related posts
More in Media tools
- TikTok ad creatives prohibit watermarks: sample corner stills first
TikTok's reservation spec prohibits watermarks, TikTok's own included. Pull stills with video-inspect and crop the four corners before a reused clip goes up.
- TikTok horizontal ad minimum is 960x540: which 16:9 sizes clear it
TikTok's in-feed page lists 960 x 540 as the minimum for 16:9. Sume Timeline accepts 960x540, 1280x720 and 1920x1080, all at $0.10 per output minute.
- TikTok non-Spark ad captions: no links, @ or hashtags, lint first
TikTok's auction page says non-Spark captions allow no links, @ symbols, or hashtags; Spark Ads take 4 caption lines. Lint the text in Python before upload.
- White backgrounds hide TikTok's ad UI: dim the clip, check for free
TikTok's reservation page warns that white or transparent backgrounds can hide the nickname and captions. Dim with video-filter ops, check first, then re-probe.
Written by Sume