Motion presets are set via the motion array on video, image, and text elements. Only fields that differ from their defaults are shown (easing defaults to "ease_in_out", reversed defaults to false).
For text and image elements, duration is required — the API returns 422 if it is missing. video and audio elements have no duration field — use out_point to control clip length.
Fade in
Fade the element in over 0.5 seconds at the start. Text is visible from 1 s to 5 s over video. time on the motion object is absolute timeline seconds — the same clock as the element’s own time. Match it to the element’s time for entrances, and set it to element time + duration − motion duration for exits.
Fade out (reversed)
Use "reversed": true to play the exit variant of any motion preset. Text visible from 0 s to 6 s; the fade-out runs during the last second of that window.
Position in (slide)
Text slides in at 2 s, stays for 3 s, anchored on the left side of the frame.
Ken Burns (video / image)
Slow pan and zoom on footage.
Looping animation
Continuous motion while the element is visible. Text visible from 1 s to 7 s; set the loop preset duration to match the element’s duration.
Per-character animation (text only)
Animate each character individually with "scope": "character". Only supported on text elements. Text visible from 0.5 s to 4.5 s.
Supported types: fade, slide_up, slide_down, slide_left, slide_right, zoom_in, bounce, bounce_motion, blend.
All motion types
Types marked both have an exit variant — add "reversed": true to play the exit. Types marked exit only set reversed automatically and never need it in the request.
Opacity
Position
Scale & bounce
Wipe
Rotation
Ken Burns (video / image only)
Looping