Save47
REST API · CLI · Bulk endpoint

Download videos from your terminal

A small REST API for scripting bulk downloads. Free tier, instant key issuance, no signup beyond an email.

Get a free API key

Free tier: 200 requests / month. Plenty for personal scripts and one-off batches.

Quick start

Replace $SAVE47_KEY with the token issued above.

Probe a URL (metadata only)
curl 'https://save47-api-production.up.railway.app/v1/probe?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ' \
  -H "Authorization: Bearer $SAVE47_KEY"
Download a file
curl -L --output video.mp4 \
  'https://save47-api-production.up.railway.app/download?url=<URL>&formatId=1080p' \
  -H "Authorization: Bearer $SAVE47_KEY"
Bulk probe (up to 50 URLs)
curl -X POST 'https://save47-api-production.up.railway.app/v1/bulk' \
  -H "Authorization: Bearer $SAVE47_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urls": ["https://youtu.be/abc", "https://youtu.be/def"], "concurrency": 4}'
Use the CLI
# install
npm i -g save47-cli

# configure
save47 login $SAVE47_KEY

# download
save47 download "https://www.tiktok.com/@user/video/123"

# bulk
save47 bulk urls.txt --concurrency 4 --out ./downloads

Endpoint reference

GET
/v1/probe

Returns metadata + available formats for a URL. Cached for 10 minutes.

GET
/download

Streams the media file. Set Authorization to skip per-IP rate limit and Turnstile.

POST
/v1/bulk

Body: { urls: string[], concurrency?: 1-8 }. Returns metadata for each URL.

GET
/v1/me

Returns your key info: id, plan, monthly quota, label, created timestamp.

FAQ

Submit your email on this page. A free-tier key is issued instantly with a generous monthly quota for personal projects and scripting.