Course intro in 45 seconds: ducked music bed and captions for $0.30

Assemble a 45-second online course intro on Sume: narration spine, a looping music bed that ducks under the voice, then burned captions. $0.10 + $0.20 = $0.30.

5 min readSume
All posts

A 45-second course intro on Sume is one Timeline render with a soundtrack that ducks under the narration, then one caption job. The render is $0.10 (ceil(45 / 60) = 1 minute), the caption job is $0.20 for a clip up to 60 seconds, so the finishing steps cost $0.30. The narration and any generated footage are separate jobs and are not in that figure.

The soundtrack block

Timeline takes a voice file as the audio spine, and an optional soundtrack bed with url, gain_db, loop, fade_out_seconds (up to 10), and duck_db (0 to 20). duck_db needs a real spine, not audio.mode: "silence", because the bed ducks under the voice spine. The bed has a loop flag, so a short track can run under a longer intro.

{
  "audio": { "url": "https://media.sume.com/artifacts/artf_vo/intro.wav", "duration_seconds": 45 },
  "soundtrack": {
    "url": "https://media.sume.com/artifacts/artf_mu/bed.mp3",
    "gain_db": -6, "loop": true, "duck_db": 12, "fade_out_seconds": 3
  },
  "video": [
    { "source_url": "https://media.sume.com/artifacts/artf_v/title.mp4", "start": 0, "duration": 45 }
  ]
}

Refusals to expect

The docs list stable codes for bad programs. Two matter here: duck_requires_audio_spine when duck_db is set with silence, and soundtrack_fade_exceeds_output when the bed fade is longer than the spine. Both are 400s at submit, so you do not pay for a render that never started.

Timeline soundtrack fields, as of 2026-10-08 (docs.sume.com/models/timeline)
FieldRangeNote
audio.gain_db-60 to 12Level of the narration spine
soundtrack.duck_db0 to 20Needs a real audio spine
soundtrack.fade_out_secondsUp to 10Must not exceed the output length
output.fade_in_seconds / fade_out_seconds0 to 5 eachTheir sum must be at most the output length

Captions last

Burn captions once, on the finished cut. The standalone caption job takes a public HTTPS video URL, so fetchability matters. Style defaults follow the text: slam for Latin text and black-outline for Korean. Latin-only styles such as slam, punch, and tiktok-green reject Korean text with caption_hangul_text_latin_style, so a Korean course should select korean-ad or a Hangul style.

If you already have the script, send it as script_text. Sume keeps the speech-to-text word times and aligns your text to them. A failed alignment returns script_alignment_mismatch or script_alignment_failed, and the advice is to simplify or drop the script.

Where to put the course promise

The first three seconds decide whether a learner stays, so put the course promise in the first slot and the instructor on screen in the second. Timeline slots need increasing start times and the first slot must start at 0, so write the program top to bottom in time order. A transition is allowed only on slots after the first, is at most one second, and may be at most 50% of the shorter neighbor.

Fades are optional. Plain cuts are the safer default for a spoken intro, since each fade eats into the neighbors and Timeline refuses more than eight adjacent fades with too_many_chained_transitions.

Total

The arithmetic is short enough to check by hand.

Finishing cost of a 45-second intro, as of 2026-10-08
StepRatePrice
Timeline render, 45 s output$0.10 per ceil(minute)$0.10
Standalone captions, up to 60 s$0.20 per job$0.20
Total finishing$0.30

If the intro runs 61 seconds, the render bills 2 minutes ($0.20), and the caption job is past the 60-second fixed estimate, so confirm the live price in GET /v1/catalog first.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume