Skip to main content
A Tella Motion batch is a list of up to 256 items, each an editor command (a camelCase type such as addTitle) or an op (a dotted type such as node.patch). This page lists all 38 editor commands and 19 ops with every field they take.

Send a batch

The same items work over MCP and the REST API. With the MCP server, pass them to apply_motion_editor_commands:
With the REST API, send the same commands (and optional baseRevision and dryRun) to POST /v1/motion/documents/{id}/commands:
Items apply in order as one transaction: if any fails, nothing applies, and the error names the failing item’s index. For one item’s exact JSON Schema, call get_motion_schema with schema: "edits" and its type (REST: GET /v1/motion/schema?schema=edits&type=addTitle).

Conventions

  • Nodes are named by ID (node, nodes, parent, fields typed node id). IDs are unique in the document, inside compositions too; get_motion_document lists them. A path through instances (scene.1/title) works too.
  • Commands take times in seconds on the clock of the composition the node sits in, and property values in the units Properties, easing and fonts lists (pixels, degrees, decibels, and fractions for percentages: opacity 0.5 is half).
  • Ops take raw render timeline values: times as ticks or {"seconds": 1.5}, gains as linear numbers or {"db": -6}.
  • New IDs: leave nodeId, effectId or newNodeId out to have one generated. The batch result lists created nodes in affected.created.
  • Prefer a command for anything the editor does: it keeps the editor’s conventions (effect wrappers, keys on the node’s own clock, title and shape styles), so the result stays editable by hand. Use ops for the rest.

The example document

Every example on this page runs in Tella’s test suite on a 1920×1080, 4-second document that holds a background shape bg, a sequence camera of two video clips cam.1 and cam.2, a voice track voice, and what this batch adds:
su_music and su_logo stand for uploads of your own: a source ID from create_source, a chat attachment or a library item’s sourceId. The fitCanvas example runs on an overlay’s document holding only that batch.

All commands

Add content

Each adds one node on top of what is there, under parent (a sequence, a group, a composition instance, or the canvas when left out). Leave nodeId out to have one generated: the batch result lists it in affected.created.

addTitle

Adds a title (text). box places the top-left of its first line and the width it wraps and aligns in. Example item:

addShape

Adds a shape: fill covers its composition, rect and circle draw in box. A #00000000 fill with backdrop effects is an adjustment layer. Example item:

addMedia

Places a video, image or sound: mediaId for media already in the document (list_motion_media), or sourceId for an upload, which Tella reads as the image, video or sound it is. Example item:

addPath

Adds a vector path from SVG path data in canvas pixels, filled, stroked or both. Example item:

Change content

Change what a title, shape or path shows. Fields you leave out keep their value.

setTitle

Changes a title’s text, box, font, size, colour or spacing. Example item:

setShape

Changes a shape’s kind, box, colour or corner radius. Example item:

setPath

Changes a path’s points or paint, or morphs it between keyed paths (matching point counts morph point for point). A batch that uses it:

Timing

Times are seconds on the clock of the composition the node sits in. ripple only matters in a sequence, where nodes play one after another.

split

Splits a node in two at a time. Example item:

trim

Moves a node’s start or end. A new start trims the head: what plays stays put. Example item:

delete

Removes a node. ripple closes the gap it leaves in a sequence. Example item:

duplicate

Copies a node, with its keys and effects, next to itself. Example item:

setSpeed

Plays a node faster or slower (0.05 to 20). Example item:

setTransition

Sets the transition into a sequence child from the child that ends where it starts. Example item:

stagger

Starts each node interval seconds after the one before, moving their keys and effects with them. Example item:

setTimeRemap

Replaces a media node’s or composition instance’s timing with keys of which source time shows when: slow motion, speed ramps and freeze frames (hold). Media plays forward only. Example item:

setMarkers

Sets every marker a node keeps: moments or spans with labels, for timing other nodes to. Example item:

Animate properties

Properties work as in After Effects: a value is constant until you key it, then it follows its keys. Property names, units and easing names are listed in Properties, easing and fonts. Keys are set at times on the node’s composition clock, so a node that starts at 2 s is keyed from 2.

setProperty

Sets a property. On an animated property at is required and sets the key there; without value it adds a key holding the value at at. blendMode, flipX and flipY are set without at. Example item:

setKeyframes

Replaces a property’s animation with these keys. easing: "continuous" carries speed through each key, like After Effects’ auto bezier. Example item:

editKeyframe

Moves, revalues or re-eases one key by its id (inspect_motion_node_properties lists ids), or re-eases several keys, or every key when neither key nor keys is given. A batch that uses it:

removeKeyframes

Removes keys by id or time, or all of them, leaving the property at its value there. A batch that uses it:

animate

Applies an In or Out preset: two keys on opacity, position or scale from an edge at the node’s start, or to one at its end. They are ordinary keys afterwards. Example item:

setExpression

Adds a wiggle (random drift over the property’s value) or a loop (repeats its keys) to a property, or removes one. The value and keys underneath stay editable. Example item:

setTextAnimation

Animates a title per character, word or line as it comes in or goes out. preset: null removes it. Example item:

Effects, masks and mattes

A node’s effect stack applies after the inspector’s own colour, blur and shadow, innermost (index 0) first. Effect kinds and their parameters are listed in Tella Motion effects. After it is added, an effect’s numbers are properties (field:@e.<effectId>/effect/<param>) you can key like any other.

addEffect

Adds an effect to a node’s stack. kind: "shader" runs your own SkSL. backdrop: true filters what is beneath the node instead (frosted glass; on a transparent shape, an adjustment layer). Example item:

setEffect

Changes an effect’s parameters or preset, or switches it off (enabled: false keeps its settings and keys). A batch that uses it:

removeEffect

Removes an effect from a node’s stack. A batch that uses it:

moveEffect

Moves an effect in the stack; index 0 applies first. A batch that uses it:

setMasks

Replaces a node’s masks (rectangles, ellipses or SVG paths), applied before its effects. [] removes them. Example item:

setMatte

Shows a node through another node of the same composition (a track matte), by its alpha or luma. The matte node is hidden unless showMatte. Example item:

applyLook

Copies one node’s style (opacity, blend, flips, corners, colour, blur, shadow) and effect stack onto others. Where they sit and how big they are stay their own. Example item:

Structure and canvas

Group nodes to move, fade or add effects to them as one, and fit the canvas to what it shows.

group

Groups sibling nodes into one layer in the topmost one’s place, to move, fade or add effects to them together. Example item:

ungroup

Puts a group’s nodes back in its place. A moved group leaves a hidden null they follow; a clipped or filtered group is refused. A batch that uses it:

fitCanvas

Shrinks the canvas to what its nodes draw at rest, plus padding, moving them and their keys with it. Its note gives the rectangle to place the overlay at so the content stays where it was in the video. Example item:

Curves and bindings

Curves are After Effects’ expression controls: named values on the canvas clock that nodes and shader uniforms can read, so one number drives many properties.

setCurve

Sets a named curve: a number, keys on the canvas clock, or an expression over other curves. null removes it. Example item:

bindProperty

Binds a node’s property to an expression: a curve, the time, arithmetic over them, or where a canvas point lands through a lens shader’s camera. Bound to a title’s text, the title shows the number. A batch that uses it:

Audio

volume (dB) and pan (-1 to 1) are properties of anything with sound, so they key with setProperty and setKeyframes.

setFades

Sets a sound’s fade in and fade out, in seconds. Example item:

duck

Turns a sound (music) down while other nodes (voice) play. Its level and fades stay editable; under: [] removes the duck. Example item:

Guards

A guard checks the document and fails the batch, so nothing applies, when it is not as you expect.

expect

Fails the batch unless a node exists (or not), or a property has a value at a time, within tolerance. Example item:

Ops

Ops are the edits the document stores, written with render timeline values. Use one when no command does what you need. get_motion_schema gives each op’s full schema, including the RenderNode shapes that node.insert and node.patch take.

document.rename

Renames the document. Example item:

canvas.set

Sets the canvas size, frame rate or length. A new document is as large as the video and 10 s long. Example item:

node.insert

Inserts a node written as the render timeline stores it. Prefer addTitle, addShape, addMedia and addPath, which fill in the editor’s conventions. Example item:

node.remove

Removes a node. Example item:

node.patch

Changes any of a node’s stored fields. A key left out is untouched, null clears it, an object merges into the object it lands on (unless it names another type), and anything else replaces it. Keyframes and markers are written by id: {"keyframes": {"k1": {"value": 2}, "k2": null}} edits k1 and removes k2. Example item:

node.move

Moves a node to another parent, time or paint position. Example item:

node.trim

Moves a node’s start or end. Example item:

node.wrap

Wraps a node in an effect wrapper. Prefer addEffect. Example item:

node.unwrap

Removes a wrapper node, keeping what it wraps. A batch that uses it:

node.rewrap

Moves a wrapper so it wraps another node. A batch that uses it:

node.split

Splits a node in two. Example item:

meta.set

Sets a node’s editor state, or clears it with null. Example item:

asset.set

Adds or replaces an asset (fonts, images, lotties, luts, media, pictures, shaders, springs, svgs). Place photos, videos and sounds with addMedia and a sourceId instead. Example item:

asset.remove

Removes an asset. A batch that uses it:

composition.set

Adds or replaces a composition: a reusable tree of nodes that instances play. Editing it changes every instance. Example item:

composition.remove

Removes a composition. A batch that uses it:

transition.set

Adds or replaces a transition in a sequence. Prefer setTransition. Example item:

transition.remove

Removes a transition from a sequence. A batch that uses it:

curve.set

Sets or removes a named curve as stored. Prefer setCurve. Example item:
Last modified on October 28, 2026