Export an animation as video
figma_export_videoRender animated Figma frames as MP4, GIF, or WEBM files; collect long jobs by jobId and extract exact PNG stills.
Instructions
Render the animation of a top-level frame to MP4, GIF or WEBM — the way to SEE motion; figma_export_node renders only the rest state. A layer exports its top-level frame (exportedNodeId). Always writes a file (saveTo, else the export directory). Waits up to wait s (default 40, at most 45); a longer render answers status "rendering" with a jobId, and figma_export_video { jobId } collects it. Name your own jobId for long renders and start no second export meanwhile; cancel + jobId drops one. frameIndices (or frames, seconds) return those frames as PNG (long side ≤ 1024), frame-exact, with ffmpeg; ones not cut in time come back as framesPending. A render is a preview; final: true is the delivery, refused under BRIDGE_PROCESS=strict until figma_check_motion passed on the frame at this fps, the file unchanged since. Meanwhile other Figma calls answer BUSY. fps: MP4/WEBM 12|24|30|60, GIF 8|12|15|24|30. Skills: motion, critique. Editors: Design only.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | MP4/WEBM 12, 24, 30 (default), 60; GIF 8, 12, 15 (default), 24, 30. | |
| wait | No | Seconds this call waits for the render (default 40; at most 45 unless the server allows more). Lower it if your client cuts calls sooner; 0 starts and returns. | |
| final | No | true for the delivery render: needs a passing figma_check_motion on the frame at this fps, with no change to the file since. Default false: a preview. | |
| jobId | No | Letters, digits, . _ -. With `nodeId`: your name for this render. Alone: collect or poll that render. | |
| scale | No | 0.5, 0.75, 1 (default), 1.5, 2, 3 or 4. | |
| width | No | Output width in px; height follows the aspect ratio. | |
| cancel | No | With `jobId` only: drop that render. Figma finishes a render it has begun; its result is discarded. | |
| format | No | Default MP4, or what the saveTo extension implies. | |
| frames | No | Seconds to return as PNG stills, each mapped to its nearest frame, e.g. [0, 0.4]. | |
| height | No | Output height in px; width follows the aspect ratio. | |
| nodeId | No | The animated top-level frame, or any layer inside it (id or Figma link). Starts a render; omit it to collect one by `jobId`. | |
| saveTo | No | File to write, .mp4 / .gif / .webm. Same path rules as figma_export_node's saveTo. | |
| quality | No | MP4/WEBM only. Default HIGH. | |
| session | No | Optional sessionId or file name, to pick a Figma file when more than one is connected. | |
| loopCount | No | GIF only: 0 loops forever (default). | |
| frameIndices | No | Frames to return as PNG stills, exactly: frame k is the timeline at k / fps. Not with `frames`. |