Skip to content

Renders and previews

A render is a queued job that produces the final file and uses your export allowance. A preview is an instant frame or composition that costs nothing.

Renders#

POST /v1/renders queues an export of the project's saved document and answers 202 straight away with a job. The job moves through these statuses:

StatusMeaning
PENDINGQueued, waiting for a render slot.
PROCESSINGRendering. progress goes from 0 to 100.
COMPLETEDDone. url is the file.
FAILEDIt did not render. error says why.
CANCELLEDStopped before it finished.

The plan decides the rest, and the response's applied object tells you what it decided: the maximum output height (a project taller than the cap renders at half height), whether a watermark is added, and render priority. A plan also limits how many renders run at once and, on some plans, how many exports a month; over either limit the request is refused with 402 quota_exceeded and nothing is queued.

Knowing when it is done#

Subscribe a webhook to render.completed and render.failed. Keep a bounded poll of GET /v1/renders/{id} (every five seconds, for a few minutes) as a fallback for a missed delivery.

Previews#

GET /v1/projects/{id}/preview answers three different questions, none of which use your export allowance:

  • Is the layout right? The default JSON answer: duration, canvas, layout lint and suggestedPreviewTimes. Starts no browser.
  • What does this exact frame look like? ?format=image&at=2.5 returns a JPEG drawn by the same pipeline as the export. Ten frames a minute per key.
  • Can I scrub it in a page? ?format=html returns an approximate HTML composition. For an exact, interactive player in your own UI, embed /embed/player.

The video preview guide walks through all of them.