Skip to main content
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.
{
  "width": 1920,
  "height": 1080,
  "duration": 10,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "time": 0,
      "in_point": 0,
      "out_point": 10
    },
    {
      "type": "text",
      "id": "t1",
      "text": "Hello",
      "font_size": 72,
      "time": 1,
      "duration": 4,
      "x": "50%",
      "y": "50%",
      "motion": [
        { "type": "fade", "time": 1, "duration": 0.5 }
      ]
    }
  ]
}

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.
{
  "width": 1920,
  "height": 1080,
  "duration": 10,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "time": 0,
      "in_point": 0,
      "out_point": 10
    },
    {
      "type": "text",
      "id": "t1",
      "text": "Goodbye",
      "font_size": 72,
      "time": 0,
      "duration": 6,
      "x": "50%",
      "y": "50%",
      "motion": [
        { "type": "fade", "time": 5, "duration": 1, "reversed": true, "easing": "ease_out" }
      ]
    }
  ]
}

Position in (slide)

Text slides in at 2 s, stays for 3 s, anchored on the left side of the frame.
{
  "width": 1920,
  "height": 1080,
  "duration": 10,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "time": 0,
      "in_point": 0,
      "out_point": 10
    },
    {
      "type": "text",
      "id": "t1",
      "text": "SLIDE",
      "font_size": 72,
      "time": 2,
      "duration": 3,
      "x": "20%",
      "y": "50%",
      "motion": [
        { "type": "slide_right", "time": 2, "duration": 0.8 }
      ]
    }
  ]
}

Ken Burns (video / image)

Slow pan and zoom on footage.
{
  "width": 1920,
  "height": 1080,
  "duration": 10,
  "elements": [
    {
      "type": "video",
      "source_url": "https://cdn.example.com/photo.mp4",
      "volume": 0,
      "motion": [
        { "type": "ken_burns_in", "time": 0, "duration": 10 }
      ]
    }
  ]
}

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.
{
  "width": 1920,
  "height": 1080,
  "duration": 10,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "time": 0,
      "in_point": 0,
      "out_point": 10
    },
    {
      "type": "text",
      "id": "t1",
      "text": "ALERT",
      "font_size": 96,
      "time": 1,
      "duration": 6,
      "x": "50%",
      "y": "30%",
      "text_color": "#ff0000",
      "motion": [
        { "type": "loop_wiggle", "time": 1, "duration": 6 }
      ]
    }
  ]
}

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.
{
  "width": 1920,
  "height": 1080,
  "duration": 10,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "time": 0,
      "in_point": 0,
      "out_point": 10
    },
    {
      "type": "text",
      "id": "t1",
      "text": "WAVE",
      "font_size": 96,
      "time": 0.5,
      "duration": 4,
      "x": "50%",
      "y": "60%",
      "motion": [
        {
          "type": "bounce",
          "time": 0.5,
          "duration": 1,
          "scope": "character",
          "delay": 0.05
        }
      ]
    }
  ]
}

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

typeDirectionDescription
fadeboth — reversed: true for exitFade in / fade out

Position

typeDirectionDescription
slide_upboth — reversed: true for exitSlide in from below / out upward
slide_downboth — reversed: true for exitSlide in from above / out downward
slide_leftboth — reversed: true for exitSlide in from the right / out to the left
slide_rightboth — reversed: true for exitSlide in from the left / out to the right

Scale & bounce

typeDirectionDescription
zoom_inentrance onlyScale up into view
zoom_outexit only — auto-reversedScale down out of view
bounceboth — reversed: true for exitBouncy scale entrance / exit

Wipe

typeDirectionDescription
wipe_leftboth — reversed: true for exitWipe reveal from right / conceal to left
wipe_rightboth — reversed: true for exitWipe reveal from left / conceal to right
wipe_upboth — reversed: true for exitWipe reveal from bottom / conceal upward
wipe_downboth — reversed: true for exitWipe reveal from top / conceal downward

Rotation

typeDirectionDescription
rotate_cwboth — reversed: true for exitClockwise rotation in / out
rotate_ccwboth — reversed: true for exitCounter-clockwise rotation in / out

Ken Burns (video / image only)

typeDirectionDescription
ken_burns_inentrance onlySlow zoom in
ken_burns_outentrance onlySlow zoom out
ken_burns_in_outentrance onlyZoom in then out

Looping

typeDescription
loop_wiggleQuick shake — like AE’s wiggle() expression
loop_rotateContinuous rotation
loop_rotate_smoothSmooth continuous rotation
loop_3d_spin3D spin
loop_3d_sway3D sway