Archived docs Get your API Key
Get started
Tutorials
Guides
Reference
Help for coding agents
๐Ÿค– AI Assistant

Rendering videos

Every way of rendering ends in the same place: the Render videos dialog, which says what will happen and what it will cost before anything starts. Nothing is charged until you press its button.

Choosing what to render

From Button Renders
Workflow tab, under a template Render N The rows that template's filter selects and that have not rendered, failed or been refused yet.
Workflow tab, under a template Retry N failed ยท Re-render N expired Offered instead when there is nothing new to render: the rows that failed, or the videos that expired with no copy anywhere.
Input dataset tab, with rows ticked Render N selected Exactly the rows you ticked, for the template the table shows results for. The filter does not apply to rows picked by hand.
Input dataset tab, a row's Actions Render ยท Render again ยท Retry That one row.
Input dataset tab, above the table Retry the N failed The rows whose render failed.
Output videos tab, Failed or Expired chip Retry N failed ยท Re-render N expired Exactly the rows those videos came from.

Each batch renders one template. One template runs one batch at a time; a second has to wait for the first to finish or be cancelled.

To check a row before spending anything on it, Preview it from its Actions: it plays that row's video in your browser, without rendering it. โ†’ Previewing a row

Before your first batch

Your email must be verified. This applies on every plan, once per account. Until it is, the Render videos dialog says so โ€” Not yet. โ€” and its button stays disabled.

What the dialog tells you

The Render videos dialog names the automation and the template, then states everything in the order it is spent:

Line What it means
Rows or Selected Where the rows come from: All 120 rows, 34 rows from the filter (with Edit filter), or 3 selected rows.
Already rendered Rows that already have a video from this template. Left out: they are not made again and not charged again.
Expired Rows whose video was rendered and has since been deleted. Left out unless you ask.
Failed before Rows whose last render failed. Left out unless you ask.
Blocked Rows the pre-flight check refused โ€” not queued, not charged โ€” with show them.
Not checked yet Rows nobody has checked yet, with check them now. The dialog checks them on its own when there are 2,000 or fewer.
Will render The real count. It is the number on the button.
Deliver to The template's destinations, or Nowhere โ€” the video URL only.
At a time How many videos render at once on your plan.
Per batch On a plan that caps it, how many rows one batch may render.

Then the Credits, as a range, and what your balance would be at worst. If the worst case is more than you have, the dialog says so: the batch will run until the credits are gone, then pause and hold the remaining rows.

Last, a note about expiry: videos are deleted 7 days after rendering. With a destination, the copies there are yours to keep. With none, the note is a warning and names the day the links will stop working.

The button says Render N videos. When there is nothing to render it says Nothing to render, and the dialog says why โ€” the filter selects no rows, every row already has a video, every row is blocked โ€” and what would change it.

The options

Three checkboxes, all off unless the button you pressed is the decision:

  • Also re-render rows that already have a video โ€” charged again. For when you changed the template, or want a fresh copy.
  • Also retry rows that failed. Ticked for you when you pressed Retry.
  • Also re-render expired videos (N) โ€” charged again. Only shown when some videos have expired. Ticked for you when you pressed Re-render N expired.

Ticking one asks the server again, so the count on the button is always exactly what the button will send.

Why the cost is a range

A video costs 1 credit per second of output, so the cost of a row is the length of the video it makes โ€” and that is not always known in advance. A row with 3 items in a list makes a shorter video than one with 12. A scene that lasts as long as the video inside it has no length until that video is fetched. Where the top of the range cannot be known at all, the dialog says so and says why, instead of quietly leaving it out.

You are charged for what actually renders, never for the estimate. See Credit consumption.

While it runs

The batch is queued rather than fired off at once. Videos render a few at a time โ€” 1 at once on the Free plan, 5 on paid plans, across all the batches of the account โ€” so 500 rows become 500 videos over time instead of 500 renders starting in the same second. A batch first checks its rows, then renders them.

You can leave the page. The batch keeps running on our side, and the automations list shows how far it has got in its Last batch column.

While you watch, the Workflow tab draws a ring round the template that fills as rows finish, and a banner above the table or the diagram says where the batch is:

The banner says It means
Queued Waiting to start.
Checking rows Checking the rows against the template before rendering any.
Rendering 42 of 120 rendered, with how many are rendering, waiting, failed, on hold or skipped.
Paused You paused it.
Paused โ€” out of credits The account ran out. See below.
Finished Done, with what it rendered and the credits charged.
Cancelled You cancelled it.
Failed The batch itself could not run, with the reason.

From the banner you can Pause, Resume and Cancel. None of them throws away a render already in flight: those are paid for, so they finish and their results still land in the table. Cancelling stops new renders starting; pausing does the same until you resume. A finished batch stays in the banner โ€” with Retry the N failed when some failed โ€” until you Dismiss it.

If you run out of credits

The batch pauses. Nothing is lost: the remaining rows are put On hold, none of them is charged, and you get an email saying so. Top up and the batch picks itself up on its own โ€” or press Resume โ€” and carries on from where it stopped, skipping everything that already rendered.

Retrying what failed

Retry from a failed row's Retry, from Retry the N failed, from the banner, from the template in the Workflow tab or from the Failed chip in the Output videos tab. It always goes through the same dialog, so the cost is stated first.

A retry never re-charges a success. A row that already has a video from this template is left out unless you tick Also re-render rows that already have a video.

The Output videos tab

The Output videos tab is the automation's history: every render it made, newest first. A row rendered twice is here twice, and the older one is marked Replaced.

  • List or cards, with the video's preview.
  • Filters: Template, Start date, End date and Search. They live in the page address, so a link you send opens the same list. The line under a template in the Workflow tab opens this tab already narrowed to it.
  • Status chips with their counts: All, Ready, Failed, Expired. On Failed and Expired, Retry N failed and Re-render N expired open the Render videos dialog for exactly those rows.
  • Columns: Row, Template, Status, Rendered, Expires, Credits. Open a line for its details โ€” the error, the movie ID, Show row (which jumps to that row in the Input dataset tab) and Copy link.
  • Download CSV exports every video the filters select, up to 10,000: row, template, status, rendered and expiry times, credits, URL, movie ID and error.

The history is kept for 30 days, so what failed and what it cost can still be seen three weeks after the video itself is gone.

What happens to the videos

They are deleted after 7 days

This is the part to plan for. Every rendered video โ€” from an automation or from anywhere else โ€” is stored for 7 days and then permanently deleted. See File retention.

So the video a row points at is a short-lived link, not an archive. The Status column counts down the days, turns amber in the last two, and says Expired once the file is gone; Play is then disabled. A notice above the table says when this template's videos expire, and it will not go away while they are about to. Render 500 videos on Monday, come back in two weeks, and you have 500 dead links.

Two ways to deal with it:

  1. Add a destination to the template โ€” a webhook, an FTP or SFTP server, or an Amazon S3 bucket from your Connections. Each video is sent there as it finishes, and lives on wherever you sent it. This is the right answer for any batch you care about. โ†’ Destinations
  2. Download them within the week. Fine for a handful of rows.

An expired video can be rendered again โ€” Re-render N expired โ€” but that is a new render, charged again.

They appear in your render logs

An automation's render is an ordinary render. It appears in Render logs with everything else, uses the same credits, and obeys the same plan limits on duration and resolution. Delivery results show there too, under Deliveries.

Downstream systems know which row a video came from

Every video an automation renders carries a small block of identifying data. It comes back in the webhook payload and in GET /v2/movies:

"client-data": {
  "dataset_id": "โ€ฆ",
  "dataset_row_id": "โ€ฆ",
  "dataset_row_key": "SKU-123",
  "link_id": "โ€ฆ",
  "batch_id": "โ€ฆ"
}

dataset_row_key is the value of the row's key column, when the automation has one. If you deliver by webhook, this is how the system on the other end knows which record the video belongs to.

When a row renders again

A row that already has a video is never rendered again without you asking โ€” another video is another charge. Three things lead to one:

  • You ask. Render again on a row, or Also re-render rows that already have a video in the dialog. Each one is charged again, and the dialog says so before you confirm.
  • You edited the template. New renders use the new version. If the edit changed the template's variables, the template first says Template changed and nothing renders from it until you open its mapping, check it and save it; any other edit needs nothing. Either way the videos you already have are kept, and not made again unless you tick the option โ€” the dialog counts them as Already rendered. Tick it if you want every row in the new version, knowing each one is charged again.
  • A row changed at the origin. When a sync brings a new value for a row, that row goes back to Not checked and is included in the next Render N. Its previous video is kept, and still plays until it expires. Without a key column, any edit at the origin reads as row deleted, new row added โ€” so the row loses its history and renders from scratch.

Doing this from your own code

Automations are a dashboard feature; there is no public API for them. To drive the same thing from code, call POST /v2/movies once per record with a template and that record's variables, and keep the loop on your side. The no-code integrations do exactly that from Make.com, n8n and plain HTTP.

Next