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 toapply_motion_editor_commands:
commands (and optional baseRevision and dryRun) to POST /v1/motion/documents/{id}/commands:
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_documentlists 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.5is 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,effectIdornewNodeIdout to have one generated. The batch result lists created nodes inaffected.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 shapebg, 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, underparent (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 nodeinterval 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 propertyat 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 unlessshowMatte.
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, pluspadding, 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’stext, 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, withintolerance.
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. PreferaddTitle, 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. PreferaddEffect.
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 withnull.
Example item:
asset.set
Adds or replaces an asset (fonts, images, lotties, luts, media, pictures, shaders, springs, svgs). Place photos, videos and sounds withaddMedia 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. PrefersetTransition.
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. PrefersetCurve.
Example item: