⚡ Multi-source · Provider-independent · Live now

One API.
Every medium.

Movies, music, short videos and universal social resolution — galleries with 100 images, mixed posts, honest 4K when the source truly has it. One normalized contract for every client you'll ever build.

drag to rotate · click for ripple · ctrl + scroll to zoom
…
real extractors online
…
providers healthy
…
engine capabilities
2160p
max honest quality

Every number on this page is fetched live from /api/v1/capabilities — no fake metrics.

Built like a platform, not a scraper

🧲

Universal Resolver

Drop any public URL. Platform-specific adapters run first, the universal extractor covers 1,700+ sites, and every image and video comes back in original order.

🧬

Multi-Source Engine

Providers are health-tracked, latency-ranked and fail over automatically. You see which provider answered — and which ones were attempted — in every response.

🎯

Honest Quality

144p → 2160p labeled from real source pixels. Request 2160p and get a clear fallback report if the source only has 1080p. Quality is never manufactured.

🗂

Multi-Media First

A carousel of 100 photos plus 2 videos returns 102 items — counted, typed, dimensioned, with MIME types, durations and quality per item.

🔐

Secure by Default

SSRF protection, rate limits, request IDs on every response, normalized error contract. Secrets stay server-side — always.

📦

Portable

Env-driven, Docker-ready, zero cloud lock-in. Move the whole platform to a new VPS without touching application code.

Three steps. Zero guesswork.

If you can copy a link, you can use this API. That's the whole learning curve.

1

Grab an API key

Sign up and create a key in the dashboard. One click. It's shown once, then masked — store it safely.

Create API key
2

Paste any media link

YouTube, TikTok, Instagram, Facebook, X, Reddit, SoundCloud, Vimeo, direct files… one endpoint takes them all.

POST /api/v1/download
3

Receive clean media

Honest quality labels, real metadata, your file ready to fetch. Webhooks ping you the moment it's done.

GET /api/v1/download/{id}/file
QUICKSTART

Real request you can run right now

curl -X POST https://pappy-api-downloader.duckdns.org/api/v1/download \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_KEY" \
  -d '{"url":"https://www.youtube.com/watch?v=jNQXAC9IVRw","type":"video","quality":"720p"}'

Then poll /api/v1/download/{jobId} and fetch /api/v1/download/{jobId}/file. Full guide in Docs.

What it speaks (live from the capability registry)

loading real capabilities…

Resolve a URL right now

Production endpoint — the same engine future clients use.

POST /api/v1/social/resolve Open API Docs