n8n Integration
Connect RenderIO to n8n workflows for automated video processing.
n8n Integration
RenderIO integrates with n8n so you can automate video processing as part of larger workflows. For an overview of what you can build, see our FFmpeg n8n integration page. There are two approaches: use the native n8n-nodes-renderio community node, or call the RenderIO API directly with the built-in HTTP Request node.
You can also configure RenderIO webhooks to trigger n8n workflows automatically when commands complete.
Using the native node
RenderIO has a community node package (n8n-nodes-renderio) that provides pre-built triggers and actions for n8n. Install it from your n8n instance:
- Go to Settings > Community Nodes
- Search for
n8n-nodes-renderio - Click Install
Once installed, the RenderIO node appears in the node panel with actions for submitting commands, polling status, and a trigger for webhook events.
Using the HTTP Request node
If you prefer not to install the community node, you can call the RenderIO API directly using n8n's built-in HTTP Request node.
Step 1: Add an HTTP Request node
In your n8n workflow, add an HTTP Request node from the node panel.
Step 2: Configure the request
Set the following properties:
| Property | Value |
|---|---|
| Method | POST |
| URL | https://renderio.dev/api/v1/run-ffmpeg-command |
| Authentication | None (we use a header instead) |
Step 3: Add the API key header
Under Headers, add:
| Name | Value |
|---|---|
X-API-KEY | ffsk_your_api_key_here |
Content-Type | application/json |
Step 4: Set the JSON body
Switch the body content type to JSON and provide the request body:
{
"input_files": {
"in_video": "https://example.com/sample.mp4"
},
"output_files": {
"out_video": "converted.mp4"
},
"ffmpeg_command": "ffmpeg -i {{in_video}} -c:v libx264 -preset fast {{out_video}}"
}The node returns a command_id that you use to poll for results.
Step 5: Poll for the result
RenderIO processes commands asynchronously. To get the result, add a polling loop after the HTTP Request node:
- Add a Wait node set to 3 seconds
- Add another HTTP Request node configured as:
| Property | Value |
|---|---|
| Method | GET |
| URL | https://renderio.dev/api/v1/commands/{{ $json.command_id }} |
- Add the
X-API-KEYheader with your API key - Add an IF node to check if
{{ $json.status }}equalsSUCCESSorFAILED - If neither, loop back to the Wait node to continue polling
Full HTTP Request node configuration
Here is the complete JSON configuration for the submit node:
{
"nodes": [
{
"parameters": {
"method": "POST",
"url": "https://renderio.dev/api/v1/run-ffmpeg-command",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-API-KEY",
"value": "={{ $env.RENDERIO_API_KEY }}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "input_files",
"value": "={{ JSON.stringify({ in_video: $json.file_url }) }}"
},
{
"name": "output_files",
"value": "={{ JSON.stringify({ out_video: 'converted.mp4' }) }}"
},
{
"name": "ffmpeg_command",
"value": "ffmpeg -i {{in_video}} -c:v libx264 -preset fast {{out_video}}"
}
]
},
"options": {}
},
"name": "Submit FFmpeg Command",
"type": "n8n-nodes-base.httpRequest",
"position": [460, 300]
}
]
}And the polling node:
{
"nodes": [
{
"parameters": {
"method": "GET",
"url": "=https://renderio.dev/api/v1/commands/{{ $json.command_id }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-API-KEY",
"value": "={{ $env.RENDERIO_API_KEY }}"
}
]
},
"options": {}
},
"name": "Poll Command Status",
"type": "n8n-nodes-base.httpRequest",
"position": [860, 300]
}
]
}Webhook trigger
Instead of polling, you can configure RenderIO to send a webhook to your n8n instance when a command completes. This gives you real-time notifications without any polling loop.
Step 1: Add a Webhook trigger node in n8n
- In your n8n workflow, add a Webhook trigger node
- Set the HTTP method to
POST - Copy the Production URL displayed in the node (it looks like
https://your-n8n-instance.com/webhook/abc123)
Step 2: Register the webhook URL with RenderIO
Call the RenderIO webhook configuration endpoint to register your n8n webhook URL:
curl -X PUT https://renderio.dev/api/v1/webhook-config \
-H "Content-Type: application/json" \
-H "X-API-KEY: ffsk_your_api_key_here" \
-d '{
"url": "https://your-n8n-instance.com/webhook/abc123"
}'Or configure it as an HTTP Request node in n8n:
{
"nodes": [
{
"parameters": {
"method": "PUT",
"url": "https://renderio.dev/api/v1/webhook-config",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-API-KEY",
"value": "={{ $env.RENDERIO_API_KEY }}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={ \"url\": \"https://your-n8n-instance.com/webhook/abc123\" }",
"options": {}
},
"name": "Register Webhook",
"type": "n8n-nodes-base.httpRequest",
"position": [460, 300]
}
]
}Step 3: Receive webhook payloads
When a command completes, RenderIO sends a POST request to your n8n webhook URL with the full command data, including status, output files, and metadata. Your n8n workflow triggers automatically.
The webhook payload contains the same data as the poll response, including command_id, status, output_files with storage_url values, and any metadata you attached to the command.
You can also set a per-command webhook URL by including webhook_url in the request body when submitting a command. This overrides the account-level webhook configuration for that specific command.
Example workflow: convert and notify
This workflow downloads a file, converts it to MP4 using RenderIO, and sends a Slack notification with the result.
Workflow steps:
- Trigger -- Manual trigger, schedule, or webhook from another service
- HTTP Request -- POST to
/api/v1/run-ffmpeg-commandwith the source file URL - Wait -- Pause for 5 seconds
- HTTP Request -- GET
/api/v1/commands/:commandIdto poll for status - IF -- Check if
statusisSUCCESSorFAILED- If still processing, loop back to the Wait node
- Slack -- Send a message with the download URL from
output_files.out_video.storage_url
Alternatively, replace steps 3-5 with a Webhook trigger workflow:
- Webhook trigger -- Receives the RenderIO webhook payload
- IF -- Check
statusequalsSUCCESS - Slack -- Post the
storage_urlto your channel
This eliminates polling entirely and gives you instant notifications.
Other integration platforms
RenderIO also works with Zapier, Pipedream, and Make.
Further reading
- n8n Video Processing Guide -- complete workflow setup for video processing in n8n
- n8n Convert Video -- format conversion workflows with n8n + RenderIO
- Build a TikTok Content Factory with n8n -- advanced multi-step pipeline