RenderIO
Api reference

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.dev

All 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

MethodPathDescription
POST/api/v1/run-ffmpeg-commandRun a single FFmpeg command
POST/api/v1/run-chained-ffmpeg-commandsRun up to 10 FFmpeg commands sequentially
POST/api/v1/run-multiple-ffmpeg-commandsRun up to 10 FFmpeg commands in parallel
GET/api/v1/commands/:commandIdGet command status and results
GET/api/v1/commandsList commands with optional filtering
DELETE/api/v1/commands/:commandId/filesDelete all output files for a command

Files

MethodPathDescription
POST/api/v1/files/uploadUpload a file via multipart form data
POST/api/v1/files/store-fileStore a file from a URL
GET/api/v1/files/:fileIdGet file metadata and download URL
GET/api/v1/filesList stored files
DELETE/api/v1/files/:fileIdDelete a file from storage

Presets

MethodPathDescription
POST/api/v1/presetsCreate a reusable preset
GET/api/v1/presetsList presets
GET/api/v1/presets/:presetIdGet a preset
PUT/api/v1/presets/:presetIdUpdate a preset
DELETE/api/v1/presets/:presetIdDelete a preset
POST/api/v1/presets/:presetId/executeExecute a preset

Webhooks

MethodPathDescription
GET/api/v1/webhook-configGet webhook configuration
PUT/api/v1/webhook-configSet webhook configuration
DELETE/api/v1/webhook-configDelete webhook configuration
Webhook PayloadPayload 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/:commandId until status is SUCCESS or FAILED
  • 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 use multipart/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.

On this page