Motion Sequences
A motion sequence is one slide’s animations: what moves, how, and in what order. A video post takes one in videoSettings.sequenceId on generate and import, and puts it on every slide, element by element, over the motion style. The elements it animates move its way; the others keep the style’s animations; each slide keeps its own length and transition. See Saved styles and sequences.
Sequences belong to the workspace attached to your API key. They’re the same as Your sequences 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 sequence never changes it.
List motion sequences
GET https://embed-api.postnitro.ai/motion-sequence
Returns the workspace’s saved sequences, newest first.
Headers
embed-api-key: your-api-key-here(required)
curl --location 'https://embed-api.postnitro.ai/motion-sequence' \
--header 'embed-api-key: pn-your-api-key'Response
{
"success": true,
"data": {
"sequences": [
{
"id": "cmvode5gk0003v0p6el1cbcho",
"name": "Big title",
"builtIn": false,
"summary": "title typewriter/letter → description fade; cta pulse (emphasis, repeating)",
"createdAt": "2026-10-25T21:59:06.021Z",
"updatedAt": "2026-10-25T21:59:06.021Z"
}
]
}
}| Field | Type | Description |
|---|---|---|
id | string | The value to pass as videoSettings.sequenceId |
name | string | The sequence’s name, as the editor shows it |
builtIn | boolean | Always false: there are no built-in sequences |
summary | string | Its animations in order: → starts after the step before, & with it, elements that move alike share a step, and after a ; each emphasis and exit |
createdAt, updatedAt | string | ISO-8601 times |
An empty list returns 200 with "sequences": [].
Read a motion sequence
GET https://embed-api.postnitro.ai/motion-sequence/{id}
Returns one sequence, with its stored motion: the steps as the editor stores them. You don’t need it to use the sequence.
{
"success": true,
"data": {
"sequence": {
"id": "cmvode5gk0003v0p6el1cbcho",
"name": "Big title",
"builtIn": false,
"summary": "title typewriter/letter → description fade; cta pulse (emphasis, repeating)",
"motion": { "version": 1, "duration": "auto", "steps": ["..."] },
"createdAt": "2026-10-25T21:59:06.021Z",
"updatedAt": "2026-10-25T21:59:06.021Z"
}
}
}Save a motion sequence
POST https://embed-api.postnitro.ai/motion-sequence
Saves a sequence for the workspace, in one of two ways.
From a video’s slide
One slide’s animations, as Save this sequence keeps them in the editor. designId is a video in your workspace (the designId Post Output gives a video post, or a video made in the editor), and slide is its number, counted from 1.
curl --location 'https://embed-api.postnitro.ai/motion-sequence' \
--header 'Content-Type: application/json' \
--header 'embed-api-key: pn-your-api-key' \
--data '{
"name": "Big title",
"designId": "design123",
"slide": 2
}'From steps
The steps by element name, as per-slide motion writes them: element and preset, with any of the other step fields.
curl --location 'https://embed-api.postnitro.ai/motion-sequence' \
--header 'Content-Type: application/json' \
--header 'embed-api-key: pn-your-api-key' \
--data '{
"name": "Big title",
"steps": [
{ "element": "title", "preset": "typewriter" },
{ "element": "description", "preset": "fade" },
{ "element": "cta", "preset": "pulse", "repeat": "until-end" }
]
}'A sequence keeps animations only: the slide it goes on keeps its own length and transition. Steps for the brand’s avatar, name and handle are kept too, and play wherever a slide shows them.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Up to 60 characters. Names needn’t be unique: use the sequence by its id |
designId | string | One of these | A video in your workspace, with slide |
slide | number | With designId | The slide whose animations are saved, counted from 1 |
steps | array | One of these | The steps, by element name |
Response
{
"success": true,
"message": "Motion sequence created",
"data": {
"sequence": {
"id": "cmw1k7m2c0003v0lk9f5x1r8t",
"name": "Big title",
"builtIn": false,
"summary": "title typewriter/letter → description fade; cta pulse (emphasis, repeating)",
"motion": { "version": 1, "duration": "auto", "steps": ["..."] },
"createdAt": "2026-10-29T10:00:00.000Z",
"updatedAt": "2026-10-29T10:00:00.000Z"
}
}
}The saved sequence comes back with its stored motion, as reading it gives it.
A workspace keeps up to 100 saved sequences.
Change a motion sequence
PUT https://embed-api.postnitro.ai/motion-sequence/{id}
A new name, new steps (a designId and slide, or steps, as when saving), or both. New steps replace the old whole. The response is as for saving, with "message": "Motion sequence updated".
curl --location --request PUT 'https://embed-api.postnitro.ai/motion-sequence/cmw1k7m2c0003v0lk9f5x1r8t' \
--header 'Content-Type: application/json' \
--header 'embed-api-key: pn-your-api-key' \
--data '{ "name": "Big title, typed" }'Delete a motion sequence
DELETE https://embed-api.postnitro.ai/motion-sequence/{id}
{
"success": true,
"message": "Motion sequence deleted",
"data": { "deleted": "cmw1k7m2c0003v0lk9f5x1r8t" }
}Errors
| Status | Message | When |
|---|---|---|
402 | Saving 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 |
404 | Motion sequence not found. | No saved sequence with that id in your workspace (a style’s id included) |
404 | Design not found in this workspace. | designId isn’t one of your workspace’s designs |
422 | Name is required | Saving without a name |
422 | Give the sequence's motion: … / … one way …, not more than one. | Saving with neither designId nor steps, or with both |
422 | slide must be the slide's number, counted from 1 | slide isn’t a whole number from 1 |
422 | Extra parameters passed in the body. | Any other field, slides included: built-in styles by slide type make a style |
400 | slide must be one of the design's slides, from 1 to <n>. | The video has no such slide |
400 | Slide <n> has no animations to save. | That slide doesn’t move |
400 | That design isn't a video, so it has no motion to save. | designId is a carousel or an image |
400 | steps.<n>.<field>: … | A step that can’t be used, and where it is, such as steps.0.element: … |
400 | There are no animations in it to save. | steps is empty |
409 | A workspace keeps up to 100 of these. | The workspace already has 100 saved sequences |