Reel music bed: prompt section markers for a 3-minute Reel

Music Router rejects a duration field, so steer length in the prompt. Write [0:00-0:30] section markers for a 3-minute Reel bed and loop it in Timeline.

5 min readSume
All posts

Sume's Music Router has no duration field, so to get a bed for a 3-minute Reel you say the length and the sections in the prompt itself, for example "a 3-minute track" and [0:00-0:30] Intro: .... A music generation costs a fixed $0.125, so trying two takes of a long bed is cheap compared with the render.

Metricool (read 2026-10-03) reports Instagram's new Reels guide listing clip lengths from 3 seconds up to 3 minutes, which is the budget this bed has to cover.

What the endpoint accepts

POST /v1/music-router/generate takes a prompt of 1 to 5000 characters and an optional model; omitting it, or sending sume/music-auto, routes to Lyria 3.5 today. duration and duration_seconds are rejected. Negative prompts are unsupported when non-empty, so put exclusions in the positive prompt ("instrumental, no vocals"). The audio artifact is in result.artifacts[] where type is audio, and result.lyrics may carry a model-reported section map.

A six-section brief for 180 seconds

The docs show the marker pattern [0:00-0:30] Intro: .... Use it to line sections up with the Reel's beats, and state the instrumentation once at the top.

Example section map for a 3-minute bed (prompt text, not an API field; read 2026-10-03)
MarkerSectionWhat the music does
[0:00-0:20]HookSparse pulse, no melody
[0:20-0:50]SetupAdd soft keys
[0:50-1:25]Step oneSteady groove
[1:25-2:00]Step twoSame groove, one new layer
[2:00-2:35]ProofLift, then thin out
[2:35-3:00]CloseResolve and fade

Place it in the Reel

In Timeline 1.0, soundtrack takes url, gain_db, loop, fade_out_seconds (up to 10) and duck_db (0 to 20, which needs a real voice spine rather than silence). If the generated bed comes out shorter than your Reel, set loop instead of regenerating. Duck the music under the voice with duck_db, and set a fade-out no longer than the output.

soundtrack = {
    "url": "https://media.sume.com/artifacts/artf_demo/bed.mp3",
    "gain_db": -6,
    "loop": True,
    "fade_out_seconds": 4,
    "duck_db": 10,
}
render_body = {
    "audio": {
        "url": "https://media.sume.com/artifacts/artf_demo/voice.wav",
        "duration_seconds": 180,
    },
    "video": [{
        "source_url": "https://media.sume.com/artifacts/artf_demo/a.mp4",
        "start": 0,
        "duration": 180,
    }],
    "soundtrack": soundtrack,
}
print(sorted(render_body))

What Sume does not do

Sume does not promise that the generated track lands each section on the second you wrote, and it does not guarantee a length; the prompt steers it and you read the result. It does not license trending Instagram audio either. Check the returned track against the beats and loop or re-take as needed.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume