Quickstart
Get started with the RenderIO FFmpeg-as-a-Service API in under 2 minutes.
Quickstart
RenderIO lets you run FFmpeg commands in the cloud via a simple REST API. Submit a command, poll for results, and download your output files. This guide walks you through the entire flow.
Prerequisites
You need a RenderIO API key. Keys use the ffsk_ prefix and are passed via the X-API-KEY header on every request.
If you do not have one yet, get your API key to start using the service.
Step 1: Get your API key
- Sign in at renderio.dev/dashboard
- Navigate to API Keys
- Click Create Key and copy the value immediately -- you will not be able to see it again
Your key looks like this:
ffsk_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2Step 2: Run your first command
Submit a POST request to convert an MP4 file to WebM:
curl -X POST https://renderio.dev/api/v1/run-ffmpeg-command \
-H "Content-Type: application/json" \
-H "X-API-KEY: ffsk_your_api_key_here" \
-d '{
"input_files": {
"in_video": "https://example.com/sample.mp4"
},
"output_files": {
"out_video": "result.webm"
},
"ffmpeg_command": "ffmpeg -i {{in_video}} -c:v libvpx-vp9 -crf 30 -b:v 0 {{out_video}}"
}'RenderIO returns immediately with a command_id:
{
"command_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}The actual FFmpeg processing runs in the background. Your client does not need to wait.
Step 3: Poll for results
Use the command_id to check the status of your command:
curl https://renderio.dev/api/v1/commands/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "X-API-KEY: ffsk_your_api_key_here"When the status is SUCCESS, the response includes your output files with download URLs:
{
"command_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "SUCCESS",
"command_type": "FFMPEG_COMMAND",
"total_processing_seconds": 3.42,
"ffmpeg_command_run_seconds": 2.18,
"original_request": {
"input_files": { "in_video": "https://example.com/sample.mp4" },
"output_files": { "out_video": "result.webm" },
"ffmpeg_command": "ffmpeg -i {{in_video}} -c:v libvpx-vp9 -crf 30 -b:v 0 {{out_video}}"
},
"output_files": {
"out_video": {
"file_id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
"storage_url": "https://storage.renderio.dev/files/f1a2b3c4...",
"status": "STORED",
"filename": "result.webm",
"size_mbytes": 1.24,
"duration": 12.5,
"codec": "vp9",
"width": 1920,
"height": 1080
}
}
}Download your file from the storage_url.
Complete example
Here is the full flow in a single script:
# 1. Submit the command
COMMAND_ID=$(curl -s -X POST https://renderio.dev/api/v1/run-ffmpeg-command \
-H "Content-Type: application/json" \
-H "X-API-KEY: $RENDERIO_API_KEY" \
-d '{
"input_files": {
"in_video": "https://example.com/sample.mp4"
},
"output_files": {
"out_video": "result.webm"
},
"ffmpeg_command": "ffmpeg -i {{in_video}} -c:v libvpx-vp9 -crf 30 -b:v 0 {{out_video}}"
}' | jq -r '.command_id')
echo "Command ID: $COMMAND_ID"
# 2. Poll until complete
while true; do
STATUS=$(curl -s https://renderio.dev/api/v1/commands/$COMMAND_ID \
-H "X-API-KEY: $RENDERIO_API_KEY" | jq -r '.status')
echo "Status: $STATUS"
if [ "$STATUS" = "SUCCESS" ] || [ "$STATUS" = "FAILED" ]; then
break
fi
sleep 2
done
# 3. Get the result
curl -s https://renderio.dev/api/v1/commands/$COMMAND_ID \
-H "X-API-KEY: $RENDERIO_API_KEY" | jq .Next steps
- Authentication -- how API keys work, rate limits, and security best practices
- Your First Command -- detailed walkthrough of the request and response format
- Polling & Webhooks -- two ways to retrieve your results