Skip to main content

Rendi and n8n Integration

Rendi’s integration with n8n enables seamless automation of video processing workflows by combining Rendi’s FFmpeg capabilities with n8n’s powerful workflow automation platform.

Tutorial - Running FFmpeg Commands in n8n using Rendi

The tutorial below demonstrates how to create an n8n workflow that reads video URLs from Google Sheets, processes them with FFmpeg commands via Rendi, and stores the output back in the spreadsheet.

Integration Setup

To integrate Rendi with n8n workflows:
  1. Obtain your API key from the Rendi dashboard
  2. Add an HTTP Request node in your n8n workflow
  3. Configure the node to send requests to Rendi’s API endpoints
  4. Include your API key in the request headers

Workflow Configuration

Input Requirements

Your input video files must be accessible via public URLs or signed S3 URLs. Rendi downloads files from these URLs for processing. For testing, ensure URLs are accessible in an incognito browser.

Running FFmpeg Commands

Configure an HTTP Request node as a POST to Rendi’s run FFmpeg command endpoint. The request body must include:
  • input_files: Object mapping input identifiers to URLs
  • output_files: Object mapping output identifiers to filenames
  • ffmpeg_command: The FFmpeg command string with placeholders

Handling Curly Brackets {{}}

n8n uses curly brackets {{}} for variable interpolation. When using these brackets in Rendi FFmpeg commands, you need to escape them with double backslashes, like this: \\{\\{input_0\\}\\}. The double escaping ensures both the JSON parser and n8n’s expression engine treat the brackets as literal characters. Rendi API request structure showing input_files, output_files and ffmpeg_command

Processing Workflow

After submitting a command to Rendi, you have two options to track the processing status:

Polling Method

Use an HTTP Request node configured as GET to Rendi’s poll command endpoint. Add a Wait node between the command submission and polling to allow sufficient processing time. n8n HTTP Request polling Rendi showing storage_url and file_id in output

Webhook Integration

Configure a Webhook trigger node in n8n and register that URL in the Rendi dashboard. Rendi will POST the processing results directly to your workflow upon completion. See our webhooks documentation for details.

Working with Output Files

The poll response or webhook payload contains:
  • storage_url: Direct link to download the processed file
  • file_id: Identifier for file management operations
Use these values to update your data sources or trigger downstream processes.

File Management

To delete temporary files from Rendi storage, use an HTTP Request node configured as DELETE to the delete file endpoint. Include the file ID and your API key in the request headers. A successful deletion returns HTTP status 204 with an empty response body. Set the response format to text in n8n to prevent parse errors.

Best Practices

  • Use public URLs or signed S3 URLs for reliable file access
  • Escape curly braces correctly in FFmpeg command strings
  • Implement appropriate wait times when polling or use webhooks for instant notifications
  • Store file IDs for cleanup operations to manage storage costs
  • Reference Rendi’s FFmpeg cheat sheet for ready-made command examples

FAQ

How do I run FFmpeg in n8n without installing FFmpeg locally?

Use Rendi’s FFmpeg API by sending an HTTP POST to the run FFmpeg command endpoint from n8n with your input URL, desired output filename, and the FFmpeg command string. Rendi executes FFmpeg on the server side, eliminating the need for local installation.

What permissions does my input video URL need?

The input URL must be publicly accessible for Rendi to download it (accessible in an incognito browser). Alternatively, use an S3 signed URL or any link that temporarily allows anonymous downloads.

Why are there curly braces in the FFmpeg command and how do I handle them?

Rendi uses placeholders like {{input_0}} and {{output_0}} to map files. Since n8n also treats curly braces as variable indicators, you must escape them inside JSON (with double backslashes) so the placeholders are sent literally to Rendi.

Should I poll or use webhooks to get results?

Use polling for simple, low-frequency jobs or when webhooks are not an option. For immediate responses and scalable workflows, register an n8n webhook in Rendi’s dashboard and listen for completion events.

How do I delete files stored in Rendi?

Call the delete file endpoint with the file ID returned by the poll or webhook response. Send your API key in the request headers. A successful deletion returns HTTP 204 with an empty body.

Further Reading