RenderIO
Getting started

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

  1. Sign in at renderio.dev/dashboard
  2. Navigate to API Keys
  3. Click Create Key and copy the value immediately -- you will not be able to see it again

Your key looks like this:

ffsk_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2

Step 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

On this page