Skip to Content

Video Motion

A video post (postType: "VIDEO") moves the way a video made in the video editor does, and you don’t have to ask: a request with no motion in it is animated for you. To choose how it moves, name a style, or use a style or sequence saved in your workspace.

You send in videoSettingsYour video
Nothing (or no videoSettings at all)Moves as its template does, when the template has motion; otherwise in the Clean style
"motionStyle": "bold"Every slide in a built-in style
"motionStyle": "<saved style id>"Every slide in one of your saved styles
"sequenceId": "<saved sequence id>"A saved sequence’s animations on every slide, over the style

These go in videoSettings on Generate and Import. The saved design carries the motion, so the MP4 and the editor play the same thing, and the video runs as long as its motion takes: see Length.

Examples

The smallest video request: no videoSettings, so it’s animated as its template is, or in Clean.

curl --location 'https://embed-api.postnitro.ai/post/initiate/generate' \ --header 'Content-Type: application/json' \ --header 'embed-api-key: pn-your-api-key' \ --data '{ "postType": "VIDEO", "responseType": "MP4", "templateId": "xtrnxgfgk9a08tmsz2601k1c", "brandId": "cmdhb8oe10006v0pmh6a4no6t", "presetId": "preset123", "aiGeneration": { "type": "text", "context": "Three habits that make remote teams faster" } }'

A video in one of your saved styles, with a saved sequence’s animations on every slide and music under it:

"videoSettings": { "motionStyle": "cmvozvvni001dv09njlrzgmvc", "sequenceId": "cmvode5gk0003v0p6el1cbcho", "backgroundMusicId": "cmqi7jyir0003v0m91hxnyyaq" }

videoSettings also takes the music’s volume, backgroundMusicVolume (Background music), and a voiceover the AI writes and records (Voiceover).

Motion styles

motionStyle gives every slide a style’s animations and timing, as picking a motion style does in the editor. GET /motion-style lists them, with your saved ones after.

StyleWhat it looks like
noneNothing moves; each slide holds for its reading time.
minimalEverything fades in together, with quick cross-fades.
cleanGentle fades and rises, one after another. The default.
slideshowSlides swipe across while pictures slowly zoom.
editorialHeadlines and pictures wipe in, and pages wipe across.
cinematicSlow blurs and fades that linger.
luxeLetters gather slowly and the button glints.
storyOne part at a time, with words popping in like captions.
typewriterText types itself in, with straight cuts.
snapEverything zips in from the side, with quick slide changes.
boldPops and slides, pushing from slide to slide.
playfulBouncing letters and springy text, with slides pushing up.
kineticWaves, jumps and turning slides, with a pulsing button.
glitchText glitches into place, with hard cuts.

Saved styles and sequences

Your workspace keeps the motion people save, shared by everyone in it:

  • A style is a whole video’s motion: how its starting slide, body slides and ending slide move, and how the slides change. motionStyle takes its id in place of a built-in style’s name.
  • A sequence is one slide’s animations: what moves, in what order. sequenceId puts it on every slide, element by element. The elements it animates move its way; the others keep the style’s animations, and each slide keeps its own length and transition. A step for an element a slide doesn’t show, such as an image on a slide without one, is skipped. With no style, a sequence goes over the template’s motion, or over Clean.

They’re saved in the video editor (Your styles and Your sequences in Video), or through the API’s Motion Styles and Motion Sequences endpoints, which can also make them from a video you’ve already made. Pass them by id; names aren’t taken, since two can share one.

A video keeps its own copy of the motion it was given: changing or deleting a saved style or sequence later doesn’t change the videos already made with it.

From a template

A video made from a template that has motion moves as the template does, with no motionStyle in the request. Each slide takes after the template slide it matches: the opening slide the template’s first, the closing slide its last, and the others its content slides, with a picture or without one, as they have.

  • A slide the template animates with a motion style gets that style, fitted to its own words and pictures.
  • A slide the template’s author animated by hand gets a copy of its animations.

motionStyle replaces the template’s motion, and a sequence goes over it. A video saved as a template in the editor keeps its motion, so its videos made through the API do too.

Length

A video runs as long as its slides and motion take: each slide’s animations and the time it takes to read, or, with a voiceover, as long as its narration needs. You don’t set it. videoDuration is still accepted, so requests that send it keep working, but it isn’t used.

A video can run at most 2:00. A longer one is still made, and its design saved:

  • A DESIGN response completes as usual.
  • An MP4 fails with an error that gives its length, along with the design’s designId and editorUrl, so you can shorten it in the editor, for example with fewer slides, and download it there. See Post Output.

Post Output’s duration says how long a video runs, in seconds.

What’s checked

The style, the saved style’s id and the sequence’s id are checked when you make the request, before anything is generated or charged. An unknown one returns a 422 that says which, such as videoSettings.sequenceId must be the id of one of your saved sequences.

The COMPOSE_MOTION step in Check Post Status says how long the video runs. When a template’s motion, or the default style, couldn’t be applied, it says so there, and the video is made without it.

Each slide’s own motion

For a slide-by-slide say over the animations, motion gives each slide its own steps, transition and hold, with the editor’s presets and custom keyframes. Most videos don’t need it: a style or sequence saved in the editor gives the same control without writing it. See Per-Slide Motion.

Scheduling

A video scheduled as a reel plays its design’s motion and runs as long as it does. The scheduling API’s postSettings takes its music, backgroundMusicId; a videoDuration there is ignored too.

Last updated on