Skip to Content
DeveloperEmbed APIMotion Styles

Motion Styles

A motion style is how a whole video moves: how its starting slide, body slides and ending slide come in, and how the slides change. A video post takes one in videoSettings.motionStyle on generate and import: a built-in style’s name, such as "bold", or a saved style’s id. See Video Motion.

Saved styles belong to the workspace attached to your API key. They’re the same styles as Your styles in the video editor: one saved here shows up there, and the other way round.

Reading is open to every key; saving, changing and deleting need an active paid plan. A cancelled plan counts until it ends. Without one, those calls return 402. A video already made keeps its own copy of its motion, so changing or deleting a style never changes it.

List motion styles

GET https://embed-api.postnitro.ai/motion-style

Returns the 14 built-in styles, from the stillest to the liveliest, then the workspace’s saved styles, newest first.

Headers

  • embed-api-key: your-api-key-here (required)

Example Request

curl --location 'https://embed-api.postnitro.ai/motion-style' \ --header 'embed-api-key: pn-your-api-key'

Response

{ "success": true, "data": { "styles": [ { "id": "none", "name": "None", "builtIn": true, "summary": "Nothing moves; each slide holds for its reading time." }, { "id": "minimal", "name": "Minimal", "builtIn": true, "summary": "Everything fades in together, with quick cross-fades." }, { "id": "clean", "name": "Clean", "builtIn": true, "summary": "Gentle fades and rises, one after another." }, { "id": "cmvozvvni001dv09njlrzgmvc", "name": "Launch", "builtIn": false, "summary": "Starting slide: Typewriter · Body slides: Clean · Ending slide: Bold", "createdAt": "2026-10-26T08:28:44.670Z", "updatedAt": "2026-10-26T08:28:44.670Z" } ] } }

(The other 11 built-in styles are left out above.)

FieldTypeDescription
idstringThe value to pass as videoSettings.motionStyle: a built-in style’s name, or a saved style’s id
namestringThe style’s name, as the editor shows it
builtInbooleantrue for PostNitro’s styles, which can’t be changed or deleted
summarystringWhat it does, in a line. For a saved style, each kind of slide: a built-in style’s name, or its own animations, written as in Read a motion style
createdAt, updatedAtstringISO-8601 times. Saved styles only

Read a motion style

GET https://embed-api.postnitro.ai/motion-style/{id}

Returns one saved style, with its stored motion, or a built-in style by its name.

curl --location 'https://embed-api.postnitro.ai/motion-style/cmvozvvni001dv09njlrzgmvc' \ --header 'embed-api-key: pn-your-api-key'
{ "success": true, "data": { "style": { "id": "cmvozvvni001dv09njlrzgmvc", "name": "Launch", "builtIn": false, "summary": "Starting slide: Typewriter · Body slides: title rise → description fade · Ending slide: Bold", "motion": { "version": 1, "start": null, "kinds": { "...": "..." } }, "createdAt": "2026-10-26T08:28:44.670Z", "updatedAt": "2026-10-26T08:28:44.670Z" } } }

A slide’s own animations read in order: → starts after the step before, & with it, and elements that move alike share a step (avatar,name,handle rise). A text’s split follows its preset (title typewriter/letter). After a ;, each emphasis and exit. motion is the style as the editor stores it; you don’t need it to use the style.

Save a motion style

POST https://embed-api.postnitro.ai/motion-style

Saves a style for the workspace, in one of two ways.

From a video

The whole motion of a video in your workspace, as Save as style keeps it in the editor: how each kind of slide moves, and how the slides change. designId is a video’s id: the designId Post Output gives a video post, or a video made in the editor.

curl --location 'https://embed-api.postnitro.ai/motion-style' \ --header 'Content-Type: application/json' \ --header 'embed-api-key: pn-your-api-key' \ --data '{ "name": "Launch", "designId": "design123" }'

From built-in styles

A built-in style for each slide type, named as the import endpoint names them. body_slide covers body slides with a picture and without one. A slide type you leave out takes after the nearest one you give.

curl --location 'https://embed-api.postnitro.ai/motion-style' \ --header 'Content-Type: application/json' \ --header 'embed-api-key: pn-your-api-key' \ --data '{ "name": "Launch", "slides": { "starting_slide": "typewriter", "body_slide": "clean", "ending_slide": "bold" } }'

Request Body

FieldTypeRequiredDescription
namestringYesUp to 60 characters. Names needn’t be unique: use the style by its id
designIdstringOne of theseA video in your workspace, whose motion is saved
slidesobjectOne of thesestarting_slide, body_slide and ending_slide, each a built-in style’s name

Response

{ "success": true, "message": "Motion style created", "data": { "style": { "id": "cmw1k3x9a0001v0lk2b7q8d4e", "name": "Launch", "builtIn": false, "summary": "Starting slide: Typewriter · Body slides: Clean · Ending slide: Bold", "motion": { "version": 1, "start": null, "kinds": { "...": "..." } }, "createdAt": "2026-10-29T10:00:00.000Z", "updatedAt": "2026-10-29T10:00:00.000Z" } } }

The saved style comes back with its stored motion, as reading it gives it.

A workspace keeps up to 100 saved styles.

Change a motion style

PUT https://embed-api.postnitro.ai/motion-style/{id}

A new name, new motion (a designId or slides, as when saving), or both. New motion replaces the old whole. The response is as for saving, with "message": "Motion style updated". Videos already made with the style keep the motion they had.

curl --location --request PUT 'https://embed-api.postnitro.ai/motion-style/cmw1k3x9a0001v0lk2b7q8d4e' \ --header 'Content-Type: application/json' \ --header 'embed-api-key: pn-your-api-key' \ --data '{ "name": "Launch, slower", "slides": { "starting_slide": "typewriter", "body_slide": "cinematic", "ending_slide": "bold" } }'

Delete a motion style

DELETE https://embed-api.postnitro.ai/motion-style/{id}

curl --location --request DELETE 'https://embed-api.postnitro.ai/motion-style/cmw1k3x9a0001v0lk2b7q8d4e' \ --header 'embed-api-key: pn-your-api-key'
{ "success": true, "message": "Motion style deleted", "data": { "deleted": "cmw1k3x9a0001v0lk2b7q8d4e" } }

Errors

StatusMessageWhen
402Saving motion styles and sequences needs an active paid plan.Saving, changing or deleting with a plan that is expired or past due. A cancelled plan can until it ends. A key without API credits, such as a free plan’s, gets the API’s usual 402 before this
404Motion style not found.No saved style with that id in your workspace (a sequence’s id included)
404Design not found in this workspace.designId isn’t one of your workspace’s designs
422Built-in styles can't be changed or deleted.PUT or DELETE on a built-in style’s name
422Name is requiredSaving without a name
422Give the style's motion: … / … one way …, not more than one.Saving with neither designId nor slides, or with both
422Extra parameters passed in the body.Any other field, steps included: steps make a sequence
400That design isn't a video, so it has no motion to save.designId is a carousel or an image
400slides.<type>: not a slide type. … / slides.<type> must be a built-in style: …A slide type or style name that doesn’t exist
400There's no motion in it to save.The video, or slides, gives nothing to save
409A workspace keeps up to 100 of these.The workspace already has 100 saved styles
Last updated on