RenderIO
Concepts

yt-dlp Downloads

How RenderIO downloads public platform videos with yt-dlp, maps input URLs to output files, and combines downloads with FFmpeg processing.

yt-dlp Downloads

RenderIO supports two source types:

  • Direct file URLs use input_files and run through the FFmpeg command endpoints.
  • Public platform URLs use input_urls and run through the yt-dlp endpoints.

Use yt-dlp downloads when the source is a public YouTube, TikTok, Instagram, X/Twitter, Reddit, Vimeo, Twitch, Facebook, or other yt-dlp-supported URL instead of a direct media file you already host.

Only public content is supported. RenderIO does not bypass DRM, paywalls, private accounts, or content that requires a login. You are responsible for making sure your use complies with the source platform's terms and applicable law.

Command type

yt-dlp jobs are stored as YTDLP_COMMAND commands. They use the same async lifecycle as FFmpeg jobs:

  1. Submit a public video URL and receive a command_id.
  2. Poll GET /api/v1/commands/:commandId or wait for a webhook.
  3. Read the final file URL from output_files.<key>.storage_url.

Status values are always uppercase: QUEUED, PROCESSING, SUCCESS, or FAILED.

Endpoint choices

EndpointUse it whenOutput
POST /api/v1/ytdlp-downloadYou only need the downloaded source video.RenderIO creates output keys from your input_urls keys.
POST /api/v1/run-ytdlp-commandYou need to download then transcode, trim, resize, extract audio, or create thumbnails with FFmpeg.You define output_files and reference them in ffmpeg_command.

Input URL aliases

Every yt-dlp request uses input_urls instead of input_files:

{
  "input_urls": {
    "in_video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  }
}

Alias rules match the rest of RenderIO:

  • Input URL keys must start with in_.
  • Keys can contain letters, numbers, and underscores.
  • For download-only jobs, in_video becomes out_video in the response.
  • For download-plus-process jobs, your ffmpeg_command must reference every defined input and output alias with {{double_braces}}.

Download-only output mapping

POST /api/v1/ytdlp-download does not accept ffmpeg_command or output_files. RenderIO creates output keys from the input aliases:

Input keyOutput URL path
in_videooutput_files.out_video.storage_url
in_clipoutput_files.out_clip.storage_url
in_sourceoutput_files.out_source.storage_url

For predictable tracking, one URL per command is easiest. The API also accepts multiple input_urls entries, with one output key per input key.

Download and process output mapping

POST /api/v1/run-ytdlp-command can download a public platform URL and immediately run FFmpeg on it:

{
  "input_urls": {
    "in_video": "https://www.tiktok.com/@user/video/7123456789"
  },
  "ffmpeg_command": "-i {{in_video}} -vn -c:a libmp3lame -q:a 2 {{out_audio}}",
  "output_files": {
    "out_audio": "audio.mp3"
  }
}
{
  "input_urls": {
    "in_video": "https://www.tiktok.com/@user/video/7123456789"
  },
  "ffmpeg_command": "-i <<in_video>> -vn -c:a libmp3lame -q:a 2 <<out_audio>>",
  "output_files": {
    "out_audio": "audio.mp3"
  }
}

When the command reaches SUCCESS, the MP3 URL is available at output_files.out_audio.storage_url.

If you omit ffmpeg_command, /api/v1/run-ytdlp-command behaves like a simple download endpoint.

Platform support

RenderIO runs yt-dlp on managed infrastructure. yt-dlp supports thousands of extractors, and its supported sites list changes as platforms change.

The practical rule: if the content is public and yt-dlp can extract it, RenderIO can queue it. If a platform changes its markup, format selection, or access checks, the command may temporarily fail until extractor support catches up.

Plan access

Video downloads are available during trials and on the Growth plan or higher. Requests from plans without download access return 403.

On this page