captions.animate job returns a video with word-level animated captions burned in. Speech is automatically transcribed, segmented into timed cues, and rendered as styled subtitles burned onto the source.
Accepts: video · Type:
captions.animateRequest
Parameters
Built-in caption style. One of:
hormozi, mrbeast, tiktok, pill, karaoke, word-pop, minimal, subtitle-block, neon, gold, reveal.ISO-639-1 language hint (e.g.
en, es). Absent = English. Non-English forces the large-v3-turbo model regardless of mode.Speed-vs-accuracy tradeoff for transcription.
fast:base.en, English only, ~3× faster, ~7-9% WERbalanced:small.en, default, ~5-7% WERaccurate:large-v3-turbo, ~3× slower, ~3-4% WER
Style overrides layered on top of
preset. Any field set here wins. Unset fields fall through to the preset. Key fields:font: font family name. A bundled family or the family name of a custom font you pass via thefontinput.layout:phrase(up to two balanced lines) orword(one word at a time).position:top,center, orbottom.entrance:fade,pop, orbounce. Each word reveals at its spoken moment.highlight: active-word treatment.{ "mode": "color" | "box", "color": "#RRGGBB", "textColor": "#RRGGBB", "scale": 100-200 }.fill,stroke,shadow,bold,case,marginV: colour, outline, and weight controls.
Let an in-stack model mark the important words so they render in the accent colour (the “gold words” look).
Translate captions before animating. One of
es, fr, de, pt, it, nl. Omit to keep the original language.Also return the word-level transcript plus SRT and VTT on
output.data.Inputs
URL of the source video. An uploaded asset’s content URL works too.
URL of an SRT or VTT file. When provided, its text is animated and transcription is skipped.
URL of a TTF or OTF font file. Set
style.font to that font’s family name to render captions in it. See Fonts.Fonts
Eleven presets ship with sensible default fonts. To pick a different one, setstyle.font to a bundled family. No upload needed.
| Bundled family | Pass as style.font |
|---|---|
| Inter | "Inter" |
| Bebas Neue | "Bebas Neue" |
| Anton | "Anton" |
| Montserrat | "Montserrat" |
| Poppins | "Poppins" |
| Roboto | "Roboto" |
| Oswald | "Oswald" |
- The font file URL as the
fontinput. - The font’s real family name as
style.font.
style.font must match the family name baked into the file, not the filename or URL. If it does not match, the renderer falls back to the preset font.
Like every job, this returns the standard response. See Job output for the shape and how to read the result.
To burn existing subtitles instead, see caption.burn.