---
title: "Download a public video via yt-dlp"
method: POST
path: "/ytdlp-download"
tags: ["Commands"]
---

# Download a public video via yt-dlp

`POST /ytdlp-download`

## Request

- Base URL: `https://renderio.dev/api/v1`
- URL: `https://renderio.dev/api/v1/ytdlp-download`
- Auth: API key in header `X-API-KEY`

Downloads a public video from YouTube, TikTok, Instagram, X/Twitter, Reddit, Vimeo, Twitch, Facebook and other yt-dlp-supported platforms. Returns 409 with a `Retry-After` header when the same URL failed for you recently with an error a resubmission cannot fix yet (30 minutes after SOURCE_RATE_LIMITED, 6 hours after SOURCE_UNAVAILABLE and other source errors).

## Request body

- YtDlpDownloadRequest
  - `input_urls` InputUrls, required: Input aliases mapped to public platform URLs downloaded with yt-dlp. Keys must start with `in_`.
  - `format_selector` 'best' | '2160p' | '1440p' | '1080p' | '720p' | '480p' | '360p' | 'audio_only' | 'worst'
  - `metadata` Metadata: Up to 10 arbitrary key/value pairs echoed back on the command.
  - `webhook_url` string, uri: Per-command completion callback. Overrides the account-level webhook for this command. Requires a plan with webhook access.
  - `storage_destination_id` string: Business-plan S3-compatible destination that receives this command's outputs.

## Response `200`

Command accepted

- RunCommandResponse
  - `command_id` string, uuid, required

## Other responses

- `401`: Missing or invalid API key
- `403`: Plan does not include this capability
- `404`: Resource not found
- `409`: Resource state conflict
- `422`: Request failed validation
- `429`: Rate limit exceeded — retry after the `Retry-After` interval
- `501`: Feature is not configured on this deployment

---

[API](https://skmtc.dev/renderio/apis/renderio-api.md) · [All operations](https://skmtc.dev/renderio/apis/renderio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/renderio/apis/renderio-api/revisions/062c8f1c062b?raw)
