API Reference
Complete reference for all RenderIO REST API endpoints, including commands, files, webhooks, and presets.
API Reference
The RenderIO API is a RESTful JSON API for running FFmpeg commands in the cloud. Submit commands, manage files, configure webhooks, and retrieve results -- all over HTTP.
Base URL
https://api.renderio.devAll endpoints are prefixed with /api/v1/.
Authentication
Every request must include your API key in the X-API-KEY header. Keys use the ffsk_ prefix.
curl https://renderio.dev/api/v1/commands \
-H "X-API-KEY: ffsk_your_api_key_here"import requests
response = requests.get(
"https://renderio.dev/api/v1/commands",
headers={"X-API-KEY": "ffsk_your_api_key_here"},
)
data = response.json()const response: Response = await fetch("https://renderio.dev/api/v1/commands", {
headers: { "X-API-KEY": "ffsk_your_api_key_here" },
});
const data: unknown = await response.json();const response = await fetch("https://renderio.dev/api/v1/commands", {
headers: { "X-API-KEY": "ffsk_your_api_key_here" },
});
const data = await response.json();<?php
$ch = curl_init("https://renderio.dev/api/v1/commands");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-KEY: ffsk_your_api_key_here"]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);If you do not have an API key yet, get your free API key to start making requests. See Authentication for details on key security and rate limits.
Endpoints
Commands
| Method | Path | Description |
|---|---|---|
POST | /api/v1/run-ffmpeg-command | Run a single FFmpeg command |
POST | /api/v1/run-chained-ffmpeg-commands | Run up to 10 FFmpeg commands sequentially |
POST | /api/v1/run-multiple-ffmpeg-commands | Run up to 10 FFmpeg commands in parallel |
GET | /api/v1/commands/:commandId | Get command status and results |
GET | /api/v1/commands | List commands with optional filtering |
DELETE | /api/v1/commands/:commandId/files | Delete all output files for a command |
Files
| Method | Path | Description |
|---|---|---|
POST | /api/v1/files/upload | Upload a file via multipart form data |
POST | /api/v1/files/store-file | Store a file from a URL |
GET | /api/v1/files/:fileId | Get file metadata and download URL |
GET | /api/v1/files | List stored files |
DELETE | /api/v1/files/:fileId | Delete a file from storage |
Presets
| Method | Path | Description |
|---|---|---|
POST | /api/v1/presets | Create a reusable preset |
GET | /api/v1/presets | List presets |
GET | /api/v1/presets/:presetId | Get a preset |
PUT | /api/v1/presets/:presetId | Update a preset |
DELETE | /api/v1/presets/:presetId | Delete a preset |
POST | /api/v1/presets/:presetId/execute | Execute a preset |
Webhooks
| Method | Path | Description |
|---|---|---|
GET | /api/v1/webhook-config | Get webhook configuration |
PUT | /api/v1/webhook-config | Set webhook configuration |
DELETE | /api/v1/webhook-config | Delete webhook configuration |
| Webhook Payload | Payload format, signatures, and retries |
Common patterns
Asynchronous processing
All command endpoints return immediately with a command_id. The actual FFmpeg processing happens in the background. Use one of two approaches to get results:
- Polling -- call
GET /api/v1/commands/:commandIduntilstatusisSUCCESSorFAILED - Webhooks -- configure a webhook URL and receive a POST notification when processing completes
Error responses
All error responses follow a consistent shape:
interface ErrorResponse {
error: string; // Machine-readable error code
message: string; // Human-readable description
}Rate limits
API keys are rate-limited. When you exceed the limit, the API returns 429 Too Many Requests with a Retry-After header indicating how many seconds to wait.
Content types
- Request bodies must be
application/json(except file uploads which usemultipart/form-data) - All responses are
application/json
New to RenderIO? Start with the quickstart guide to get your API key and run your first command.