Silent captioned Reel: drop the audio first, burn with words

To burn captions on a Reel with no sound, run STT first, trim with audio drop, then send your own words: $0.02 + $0.01 + $0.20 = $0.23.

4 min readSume
All posts

A silent captioned Reel needs the words before the sound is removed, because speech-to-text on a clip without audio fails. Run STT on the source ($0.01), cut the Reel with audio: "drop" ($0.02), then pass the shifted words to video captions as words ($0.20): $0.23 in all.

Why the order matters

Video captions run speech-to-text unless you send script_text, words, cues or segments. If the clip has no audible speech and you send none of them, the job fails with caption_no_speech and next_action: use_overlay_captions. A video inspect with transcribe: true on a clip with no audio track fails with inspect_source_has_no_audio. So the words must come from the original, before the audio is dropped.

Silent captioned Reel cost (rates read 2026-10-09, arithmetic only)
StepOrderRate
Video inspect with transcribe (1 minute)1$0.01
Video trim with audio drop2$0.02
Video captions with words3$0.20
Total$0.23

Steps

Re-base the words against the trim's actual_start_seconds (see re-basing), keep them inside 60 s, and send only words, because the request accepts one of script_text, words, cues and segments.

trim_body = {"video_url": SRC, "start": 1.69, "end": 27.92, "audio": "drop"}
caption_body = {
    "video_url": TRIMMED_URL,
    "style": "slam",
    "words": [{"text": "Meet", "start": 0.0, "end": 0.31},
              {"text": "the", "start": 0.31, "end": 0.42}],
}

Gotchas

  • Word entries use text, start and end in seconds; the same field names are used for cues and segments.
  • Silent output has no spine for Timeline; if you then join clips, the render needs its own audio or an explicit silent choice.
  • Latin styles cannot render Korean; Korean text on slam, punch or tiktok-green returns caption_hangul_text_latin_style.
  • Caption timings are capped at 60 s.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume