Put music under Gemini Omni's native audio: detach, spine, duck
Omni clips always carry native audio on Sume. Detach it to a wav, use it as the Timeline spine, add a music soundtrack with duck_db. Calls and limits.

Gemini Omni Flash 1.1 on Sume always returns native synced audio, and you cannot turn it off. To lay music under that sound, detach the clip's audio to a wav with audio-detach, pass the wav as the audio.url spine of a Timeline 1.0 render, and add a soundtrack with duck_db so the music dips when the clip's sound is present.
Why does the spine matter?
The Timeline docs describe the audio spine as the output's audio and its length. The soundtrack is an optional bed on top, with gain_db, loop, fade_out_seconds up to 10 and duck_db from 0 to 20. The docs state that duck_db needs a real spine and not silence, and the refusal is duck_requires_audio_spine.
That is the whole reason to detach. If you put the Omni clip in video[] with a silent spine, the music has nothing to duck under, and the clip's own audio is not carried over. The Video Router page says Omni's audio is always on and generate_audio: false is rejected, so a clip with sound is what you start from.
Step 1: detach the clip's audio
Audio detach takes a media.sume.com video and returns a new audio artifact, wav by default. The public rate is $0.01 per job. A clip with no audio track fails with detach_source_has_no_audio; Omni clips should have one, but check probe.has_audio with a probe-only video inspect if you are unsure.
curl -X POST https://api.sume.com/v1/audio-detach \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: detach-omni-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/omni-clip.mp4",
"mode": "sync"
}'Step 2: render with a ducked music bed
Read audio_url and duration_seconds from the detach result, then render. Here a 10-second Omni clip is the only video slot, the wav is the spine, and a music file sits under it at lower gain with a 2-second fade-out. Output width and height are set to keep a 16:9 clip landscape, because the default output is 1080 by 1920.
Pick duck_db by ear in the 0 to 20 range; there is no documented perfect value. The soundtrack.url must be a Sume-hosted file.
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: omni-music-001" \
-d '{
"audio": { "url": "https://media.sume.com/artifacts/artf_demo/omni-clip-audio.wav", "duration_seconds": 10 },
"video": [ { "source_url": "https://media.sume.com/artifacts/artf_demo/omni-clip.mp4", "start": 0, "duration": 10 } ],
"soundtrack": { "url": "https://media.sume.com/artifacts/artf_demo/bed.mp3", "gain_db": -12, "duck_db": 8, "fade_out_seconds": 2 },
"output": { "width": 1920, "height": 1080 }
}'What are the limits?
Timeline bills $0.10 per ceil output minute, so a 10-second render costs one minute's rate, and audio detach adds a cent. Together that is cheap next to the clip itself. Sume does not clean the clip's audio, remix its dialogue, or generate the music in this call; for a bed you can generate one with the music tools and import it first.
Omni clips run at 24 fps per Google's description in the 24 fps notes; if you leave output.fps off, Timeline renders at the rate the sources already run at. See Jobs and results to wait for both jobs.
Sources
Related posts
More in Media tools
- Mux animated GIF: 10 s and 640 px caps vs a Sume trimmed clip
Mux animated.gif and animated.webp stop at 10 seconds, 640 px and 30 fps. Sume trim can return a clip up to 900 seconds as MP4, with no GIF or WebP.
- Picsart upscale API 2x to 8x vs Sume image upscale 1x to 4x
Picsart upscale takes factors 2, 4, 6 and 8 up to 4800x4800. Sume image upscale takes a number from 1 to 4 and returns png, jpg or webp.
- Pull still frames from an AI video: Sume video-frames, at or fps
POST /v1/video-frames returns images at exact timestamps or at up to 2 fps. Request shape, the ready poll, and limits for a clip up to 300 seconds.
- Clipdrop remove-background API: 60 requests a minute vs Sume RMBG
Clipdrop's remove-background API takes a 30 MB, 25 MP upload at 60 requests a minute per key. Sume RMBG takes a public HTTPS image_url and runs as a job.
Written by Sume