Video processing in Activepieces, without polling

Add the Rendobar piece to Activepieces, connect an API key, and build a flow that compresses a video and posts the link while the flow sleeps.

Share

The Rendobar piece adds media jobs to an Activepieces flow: FFmpeg commands, compression to a target size, burned-in captions, and image generation. You install it by package name, paste a Rendobar API key, and a Run a Media Job step returns the finished file’s URL to the next step. While the job runs, the flow is paused on a waitpoint instead of polling, so a long render neither holds a worker nor hits the run timeout.

Who can install it

The piece is not in the Activepieces catalog, so it installs as a private piece from npm. On a self-hosted instance, a platform admin can add it. On Activepieces Cloud, the pricing page lists private pieces under the Ultimate plan only (checked 26 September 2026), so a Free, Plus or Team workspace cannot add it.

On those plans a catalog piece is the better choice. The Cloudinary piece uploads images and video and applies transformations such as resize, crop and watermark, with nothing to install. For a job it does not cover, the HTTP piece can call Rendobar’s REST API directly, at the cost of building the request and the wait yourself.

Install the piece and connect a key

  1. Open Platform Admin, then the Pieces page, and choose Install Piece. The current Activepieces docs place it under Platform Admin, Catalogue, Pieces. Older builds show the same page under platform settings.
  2. Set Package Type to NPM Registry, Piece Name to @rendobar/piece-rendobar and Piece Version to the latest on npm, 0.2.1 at the time of writing.
  3. Create a Rendobar API key at app.rendobar.com under Settings, API Keys. It starts with rb_.
  4. Add a Rendobar step to any flow, create a connection and paste the key. The piece checks the key against the API when you save, so a wrong key fails here and not on the first run.

A full-access key works. A scoped key needs jobs:write, assets:write and billing:read, plus webhooks:write for the Finished Job trigger. A key made before 13 September 2026 cannot read connected storage, so make a new one if you plan to use the storage actions.

The Pieces screen in Activepieces platform settings. A table lists Rendobar, package name @rendobar/piece-rendobar, version 0.1.1, alongside the Webhook piece from Activepieces itself.
Installed from npm on a self-hosted instance. This capture shows an older version. The version column tracks npm, so upgrading is a reinstall at the new number.

Build a flow that compresses a video

This flow takes a video URL, compresses it under 25 MB and posts the link to Slack. It has three steps.

  1. Trigger: add the Webhook piece’s Catch Webhook trigger. Anything that can send a POST with a JSON body such as "url": "https://…/clip.mp4" can start the flow.
  2. Rendobar, Run a Media Job: set Job Type to compress.target. Under Input Media, map Source to the trigger body’s url. Under Parameters, set For to web and the Target JSON field to {"maxSize": "25mb"}. Leave Wait for the Result on.
  3. Slack, send a message: map the Rendobar step’s file_url into the message text.
The Run a Media Job step configuration panel. Connection reads Rendobar, connected. Job Type is set to compress.target. Below it, Source, For and Target fields have appeared, each with its own description.
Choosing compress.target adds Source, For and Target, each with the description the API publishes for it.

Every job-shaped step returns the same flat row, so the next step always finds the same columns: id, type, status, succeeded, file_url, file_size_bytes, cost_formatted, duration_ms and a few more. data carries a job type’s computed result, such as a probe report, and files the full output list. cost_formatted can be empty on a row read the moment a job completes, because billing settles a moment later.

The URL in file_url expires with the job’s retention window. If the link must last, put a Share Output step between Rendobar and Slack, which turns the output into a permanent public link. If the source is a file inside the flow, for example from a Google Drive trigger, add an Upload File step first and map its url into Source.

When a job fails, the step fails too, and the run goes down the flow’s error path. Turn off Fail This Step if the Job Fails to keep the run going and branch on succeeded instead, which suits a flow where a rejected input is an expected outcome.

What happens while the job runs

Run a Media Job creates a waitpoint, hands Rendobar the resume URL as the job’s callback, and pauses the flow. Rendobar calls that URL when the job finishes, and the flow resumes with the finished row.

Two timelines compared. The polling timeline repeats status calls across the whole job and holds a worker open. The waitpoint timeline submits once, stays parked with no execution time, and resumes when Rendobar's callback arrives.
The flow is parked between the two green markers and spends no execution time there, whatever the job's length.

The pause is what makes long jobs possible. A paused flow does not count against the run timeout, which Activepieces sets at 600 seconds by default, while a Rendobar job may run for up to an hour on Free and nine on Pro. A polling step would hold a worker for all of it and still could not outlast the job. In a run against production on 1 September, the flow paused 12 seconds in and resumed 8 seconds later, and the step’s own execution came to about half a second.

The callback has to reach your Activepieces from the internet. When the resume URL is not publicly reachable, typically a self-hosted instance on a private network, the step falls back to polling on its own. Only then does Maximum Wait apply, 300 seconds by default, and it should stay below the flow timeout. The job keeps running on Rendobar either way.

If a flow should end after submitting, turn Wait for the Result off and start a second flow from the Finished Job trigger. Its Outcome setting picks succeeded jobs, failed jobs, any finished job, or the moment every storage delivery has landed. Finished Job registers a webhook. Finished Job (Polling) does the same on a timer, for an instance Rendobar cannot reach.

The other actions

ActionWhat it does for the flow
Upload FilePuts a file from an earlier step into Rendobar and returns a URL a job can read.
Get JobReads a job’s status, output file and cost.
Find JobsLists recent jobs, filtered by status and type.
Get Job LogsReads what the runner recorded, for finding out why a job failed.
Share OutputTurns a finished job’s output into a permanent public link.
Cancel JobStops a job that has not started running yet.
Get AccountReads the plan, the credit balance and the limits.
Find Storage ConnectionsLists the buckets connected on Rendobar’s Storage page.
List Storage FilesLists folders and files in a connected bucket, each with a storage:// URI a job accepts.
Custom API CallCalls any Rendobar endpoint the piece does not wrap.

The Job Type dropdown and the fields under it are read from the API when you open the step, so a job type Rendobar releases later appears without a new version of the piece.

If your Activepieces is self-hosted or on Ultimate, I would keep Wait for the Result on for nearly every flow and let the waitpoint absorb the job’s length. I would switch to the Finished Job trigger only when nothing after the job belongs in the same run. The same pattern in n8n, a callback that resumes a parked execution, is covered in the n8n Cloud FFmpeg guide.

Frequently asked questions

How do I get the output file into the next Activepieces step instead of a URL?

Turn on Download the Output File on the Run a Media Job step. The finished file is attached to the step, so a later step can upload it without fetching the URL. Activepieces caps a step file at 10 MB on Cloud, so leave it off for most rendered video and pass file_url instead.

Can I connect the Rendobar piece with OAuth instead of an API key?

The connection field accepts an OAuth access token, but the Finished Job trigger needs an API key. Rendobar treats registering a webhook as account management and refuses OAuth tokens there, so an OAuth connection leaves you with the polling trigger only.

Sources

Tags #activepieces#automation#ffmpeg#workflow#integrations
All posts
Share
  1. FFmpeg 9 in the cloud, run it exactly as local Guides for the video API
  2. Creatomate alternative, JSON video at $0.04 a minute Guides for the video API
  3. JSON video API pricing, cheapest per minute in 2026 Guides for the video API