Skip to main content
The caption stack that performs on TikTok: an opening title lands with a Difference blend motion effect, then each spoken line gets its own font, color treatment, and word-animation style, timed to word-level timestamps from transcription. One video layer carries the audio; caption elements swap in and out on the timeline. Features used: difference motion, word_animation (color, box, glow)

How this request is structured

One video, many caption lines. The video element carries the footage and audio (volume: 50). Each caption is a separate text element with its own time and duration — they appear sequentially, not all at once. Opening title uses blend motion. The first text element ("Albert") has no word_animation. Instead it uses a motion preset with "type": "difference" — the After Effects Difference blend mode, which inverts against the video backdrop per channel (|backdrop − color|). Set motion[].time and motion[].duration to match the element’s time and duration so the effect runs for the full title window. Give each caption a unique id. Element ids must be unique — the API rejects a request with duplicate ids (422). Each caption here is a separate element (t1t5) with its own time/duration window, so they still appear sequentially, one after another. Word timestamps are absolute. Each word’s start and end are seconds from the start of the composition, not relative to the text element’s time. See Word Animation Examples for details. Mix styles per line. After the opening title, this reel cycles through three karaoke styles:

Getting word timestamps

Word timestamps come from a speech-to-text / forced alignment pipeline. Common sources:
  • WhisperX — word-level alignment on top of Whisper transcriptions
  • AssemblyAI / Deepgram — both return word-level timestamps in their transcription API response
  • The FrameLane Transcribe task returns word timestamps directly usable in word_animation.words