Back to WebDownloaderAPI v1
PUBLIC API · NO API KEY

Download API

Fetch media metadata and start video or audio downloads from your own app. The API is free to use and requires no registration or API key.

Queue-based processing Automatic file cleanup
Base URLhttps://save.brianrianrehan.comRequests are rate-limited and only supported media platforms are accepted.
POST/api/v1/info

Fetch media information

Resolve a public URL before presenting format choices to your user.

curl -X POST https://save.brianrianrehan.com/api/v1/info \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://www.youtube.com/watch?v=VIDEO_ID"}'
POST/api/v1/download?wait=true&download=true

Start and save a download

Wait for the queued video or audio job, then return the actual file bytes. cURL saves it in the current directory using the filename from the server. Processing is waited on for up to 80 seconds.

curl -fSL -OJ \
  -X POST 'https://save.brianrianrehan.com/api/v1/download?wait=true&download=true' \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://www.youtube.com/watch?v=VIDEO_ID","format":"video","quality":"best","outputFormat":"mp4"}'
GET/api/v1/download/:downloadId

Check download status

Use statusUrl after a 202 response. Poll until status is completed or failed; when ready, downloadUrl contains a temporary signed link to the file.

curl \
  'https://save.brianrianrehan.com/api/v1/download/DOWNLOAD_ID'

Save the response as a file

The start endpoint returns the file itself when download=true. The -O and -J options save it locally using the server-provided filename. Replace VIDEO_ID with a public supported media URL. If the job is still queued after 80 seconds, the API returns HTTP 425 rather than creating a misleading JSON file.

Files are automatically removed after the retention period configured by the server administrator.

Built-in safeguards

  • No API key or account required
  • Installed yt-dlp extractor allowlist with public-host validation
  • Configurable rolling download-start limit per IP or Telegram account
  • Retry-After returned when an IP limit is reached
  • Short-lived signed token protects file access

See service status and usage limits.

Request body

Both /info and /download accept JSON. The download fields below are optional unless marked required.

FieldTypeDescription
urlstring · requiredPublic URL matched by an enabled extractor in the server's installed yt-dlp catalog.
formatvideo | audioMedia type. Defaults to video.
galleryModevideo | audio | photosOptional for gallery-dl links: create an MP4, download only its soundtrack, or download original photos; galleries above 10 photos are returned as a photo-only ZIP.
qualitystringQuality preference, for example best or 1080p.
outputFormatstringOutput extension such as mp4 or mp3.

Response and errors

Without download=true, the start endpoint returns JSON with a download ID, status, and signed file link. With download=true, a completed job returns the actual file bytes. Status values are pending, processing, downloading, converting, completed, or failed.

202 JSON mode still processing; follow statusUrl
400 Invalid URL or unsupported website
404 Download id not found
425 Direct-save mode is still queued after 80 seconds
413 File exceeds server limit
429 Rate or queue limit reached
500 Temporary server error