Skip to main content
Composer arranges multiple image, text, and video layers on a canvas with control over position, size, rotation, and opacity. Each connected input becomes a draggable layer in the visual editor. Composer emits an image when the composition is fully static, or a video when any video layer is present.

When to use

  • Social media templates with brand overlays
  • Product images with text and badges
  • Multi-layer video compositions
  • Branded content with logo placement
Common patterns: upload_image + text_prompt → composer, or upload_video + text_prompt + upload_image → composer.

Inputs

image
Image layers. Accepts multiple inputs and supports loop mode.
text
Text layers. Accepts multiple inputs and supports loop mode.
video
Video layers. Accepts multiple inputs and supports loop mode.
audio
Audio tracks. Accepts multiple inputs and supports loop mode. Connecting audio makes the composition render as a video.
Connect at least one image, text, video, or audio layer.

How connections become layers

One connection is one layer. Wire three images into Images and you get a single composition with three stacked layers, not three separate images. A connection can carry several values at once, like a Split Text node feeding many captions or an upload holding several files. The layer previews the first value, and the Layers panel marks it 1 of N. To render the composition once per value instead, turn on Loop for that connection in the node’s port manager. Only the looping layer advances between renders; every other layer stays where you put it, including other connections on the same port. Two product shots looping under one logo give you two images, each with the logo. Turn Loop on for a second connection as well and you get every combination of the two. The Loop switch on the port itself is a different thing: it runs the composition once per connection rather than once per value, so three wired images become three separate renders. Leave it off when you want the connections layered together. New layers stack video at the back, images above it, and text in front, so a caption never ends up buried under a full-frame clip. Within one type, the connection you wired first sits on top. Drag rows in the Layers panel to reorder.

Outputs

image
The composed image. Emitted when the composition has no video layers.
video
The composed video. Emitted when any video layer is present.

Configuration

string
default:"instagram_post"
A preset canvas size for common social media and e-commerce formats (Instagram, TikTok, YouTube, and more). Choosing a preset updates the canvas dimensions. Use custom to set your own size.
string
default:"#FFFFFF"
The canvas background fill, as a hex color. Visible where no layer covers it.
string
default:"overlay"
overlay times each layer with its own start/end; sequence plays video clips back-to-back in layer order, with lengths resolved from the real clips at render time.
number
Total exported video length in seconds. Omit for automatic (covers every clip and timed layer); a shorter value trims the output, a longer one extends it. Ignored for image-only compositions.
number
Where the exported video begins, in composition seconds (omit for 0). Trims the whole output, picture and audio together.
number
Where the exported video ends, in composition seconds (omit for the composition’s end).
number
default:"0"
Only used when arrangement is sequence. Seconds of cross-dissolve between consecutive clips (0 = hard cuts).
array
Per-layer configuration (position, size, fit/crop, timing, trims, animations, motion, volume, text styling), one entry per connected input. Normally managed in the visual editor; for the full JSON shape see Composing video → For agents and the API.
Per-layer position, size, rotation, opacity, borders, and text styling are set in the visual editor on the node. For programmatic use (API, MCP, or the in-app copilot), pass the same fields as JSON; the Composing video guide has a complete worked example.

Editing on the canvas

Open the editor from the node to arrange layers visually:
  • Drag to position, handles to resize/rotate. Arrow keys nudge the selected layer (hold Shift for 10px steps); Escape deselects.
  • Snapping. While dragging, a layer snaps to the canvas’s edges and center and to other layers’ edges, with blue guide lines showing the alignment.
  • Align buttons. The Layout panel has one-click align to the canvas left / center / right and top / middle / bottom, on each axis.
  • Crop. Select an image or video layer and click ✂ Crop to drag a marquee over the full source; trimmed edges dim as you go. Click Done cropping or press Escape to finish. Exact Crop % fields are also in the Appearance panel.
  • Rich text. Text layers support alignment (left / center / right), line height, an outline (color + width), and a drop shadow (color + blur) alongside font, size, weight, color, and background.
  • Frames. Every layer is a frame that holds content, and the Frame panel controls both halves of that. Frame size says how the container sizes itself: Hug takes the text’s or the source’s own size, Fixed width wraps text at a width you set, Fixed pins both width and height. Content fit says how the content sits in a fixed frame — Fill, Fit or Stretch for pictures and clips, Shrink text to fit for captions, which steps the font down until the text fits, stopping only at a legibility floor.
  • Anchor. A nine-square grid picks where content sits in its frame: which part of a picture survives a Fill crop, or where a caption sits vertically. Cropping a landscape clip into a vertical ad, the default centre often cuts the subject’s head off; choose the top-centre square to keep it.
  • Lock frame. Locks a frame’s position and size so it can’t be moved or resized on the canvas. Content keeps reflowing inside it, which is what makes a placeholder useful: place the frame once, and whatever text or picture arrives fits into it. Select the layer in the Layers panel to unlock it.
  • Overset. If a caption still doesn’t fit its frame at the smallest size allowed, the frame is outlined in red so you find out in the editor rather than in the finished render.
  • Preview each variant. When a connection carries several values and Loop is on, the composition renders once per value. A Variant 1 of N control appears above the canvas so you can page through them and see how every render looks — useful for checking that the longest caption still fits before you spend the encodes.
  • Resizable panels. Drag the dividers beside the Layers and Properties panels to resize them, or double-click a divider to collapse / restore it. This gives the canvas and timeline more room.
  • Space to play. When the composition has video or audio, the spacebar toggles timeline playback (unless you’re typing in a field).

Timing video layers

When a composition includes video, a timeline appears below the canvas in the visual editor, one row per layer. Drag a bar’s edges to set when the layer appears and disappears (in seconds), drag the bar to move its window, or double-click it to make the layer visible for the whole video again. You can also type exact Start s / End s values in the layer’s Layout panel. Press play on the timeline to watch the composition: video layers play their actual frames (with sound), audio tracks come in on cue, and fades happen in place. Scrub the ruler above the rows to preview which layers are on screen at any moment. The output video runs long enough to cover the latest-ending layer, even past the end of the source clips. Layers without timing stay visible for the entire composition, and timing has no effect on still-image outputs. Video and audio bars show the full source clip: the bright region plays, the darker head/tail are trimmed away. Drag the bright region’s edges to trim, or type Trim in s / Trim out s in the Layout panel. A timed clip plays from its trim-in point at its start time, and a clip with no end time plays out its full length, read from the real media at render time. The video’s length is automatic unless you set Duration s in the canvas panel. It runs to the end of your footage. A caption or logo sitting on top of a clip doesn’t make it longer, since there would be nothing but background colour after the last frame. An image or text placed after the clips does extend the video, so a still outro works. The timeline keeps hatched headroom past the end so you can extend by dragging, and blue snap guides appear when edges align. To trim the whole exported video (not a layer), drag the bracket handles on the timeline ruler, or set Video Range in the canvas panel; everything outside the range is cut from the output, picture and audio together.

Sequencing clips

To play videos one after another, switch the timeline’s Arrangement toggle to Sequence: video clips chain back-to-back in layer order (top row first), each sized by its real duration at render time. Because timing resolves when the composition renders, sequencing works even before upstream videos exist, and regenerated clips of a different length can never drift out of sync. Images and text keep their own timing for persistent overlays like logos and captions. Until the upstream nodes have run, the timeline shows clip lengths as estimates (dashed bars, with a note below the timeline) based on each source node’s settings. Run the workflow once to load real durations. In Overlay mode, bars snap to other layers’ edges while dragging, making manual back-to-back placement easy too.

Animations

Every visual layer can animate in when it appears and out when it disappears: pick Animate in / Animate out in the layer’s Layout panel (Fade, or Slide left/right/up/down), each with its own duration (0.25 to 2s). Animations anchor to the layer’s timing window, so an exit finishes exactly at the layer’s end time, and the preview shows them in place.

Audio

Connect audio nodes to add music or voice-over tracks, timed on the same timeline rows as visual layers. A video layer’s own sound is included automatically and gated to its timing window; everything is mixed into the output. Each audio track and video layer has a Volume control (0 to 200%), and a composition with audio always renders as a video, even if every visual layer is a still image.