Yoink downloads video, audio, and images from dozens of platforms through a layered pipeline that maximises reliability. When one provider fails, the next one takes over automatically — all without any manual intervention from you.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/coah80/yoink/llms.txt
Use this file to discover all available pages before exploring further.
How the download pipeline works
Every download starts with a URL validation check and a concurrency gate before any network request is made. Yoink enforces a maximum of 3 concurrent jobs per client (MaxJobsPerClient = 3) and a hard cap of 8 GB per file (FileSizeLimit = 8 × 1024 × 1024 × 1024 bytes) and 4 hours of video duration (MaxVideoDuration = 4 × 60 × 60 seconds).
For YouTube, the full fallback chain is:
- yt-dlp — primary downloader with format selection and merge
- yt-dlp with proxy — retried automatically when a proxy is configured
- Cobalt API — final fallback for YouTube when both yt-dlp attempts fail
Starting a download
| Parameter | Required | Values |
|---|---|---|
url | ✓ | Any supported URL |
format | video (default), audio, photo | |
quality | 2160p, 1440p, 1080p (default), 720p, 480p, 360p | |
container | mp4 (default), webm, mkv, mov | |
audioFormat | mp3 (default), m4a, opus, wav, flac | |
audioBitrate | 64, 96, 128, 192, 256, 320 (default) | |
progressId | Correlate with SSE progress stream | |
clientId | Per-client job tracking | |
twitterGifs | true (default) / false — auto-convert Twitter GIFs | |
playlist | true — download the full playlist; false (default) — download a single video from the URL |
Fetching metadata first
Before presenting format options to a user, fetch metadata for a URL:title, ext, uploader, duration, thumbnail, and isPlaylist. For YouTube clips it additionally includes clipStartTime, clipEndTime, and clipDuration.
Format and quality reference
Video Containers
| Container | MIME type |
|---|---|
mp4 | video/mp4 |
webm | video/webm |
mkv | video/x-matroska |
mov | video/quicktime |
Audio Formats
| Format | MIME type |
|---|---|
mp3 | audio/mpeg |
m4a | audio/mp4 |
opus | audio/opus |
wav | audio/wav |
flac | audio/flac |
Quality options
| Quality | Max height |
|---|---|
2160p | 2160 px |
1440p | 1440 px |
1080p | 1080 px |
720p | 720 px |
480p | 480 px |
360p | 360 px |
h264) video with AAC audio so the result plays back without re-encoding on most devices.
Platform-specific behaviour
YouTube
YouTube
- Metadata is fetched via Cobalt first; yt-dlp is used as a fallback.
- Clips (
/clip/URLs): Yoink parses the clip’sstartTimeMs/endTimeMs, downloads the full video via yt-dlp--download-sections, and trims withffmpegif the section download fails. - Thumbnail downloads use the
photoformat. Yoink triesmaxresdefault.jpg→sddefault.jpg→hqdefault.jpgin order.
TikTok
TikTok
- Regular videos and slideshows are downloaded via the tikwm extractor.
- Music/sound URLs (
/music/paths) are downloaded as audio-only. - Slideshows are returned as MP4 files.
Twitter / X
Twitter / X
- Downloaded via the fxtwitter extractor with yt-dlp as a fallback.
- Auto-GIF detection: When
twitterGifs=true, Yoink probes files under 20 MB and converts native GIF-type videos to real.giffiles automatically.
Instagram
- Uses a dedicated Cobalt-based Instagram extractor, falling back to yt-dlp.
All other platforms
All other platforms
yt-dlp is used directly. Any site supported by yt-dlp works out of the box.
Real-time progress via SSE
Track download progress without polling by subscribing to the Server-Sent Events stream:status field (starting, downloading, processing, complete, or error) and a percent value from 0–100. Pass the same progressId to the download request and this endpoint to correlate them.
Limits at a glance
| Limit | Value |
|---|---|
| Max file size | 8 GB |
| Max video duration | 4 hours |
| Max concurrent jobs per client | 3 |
| Metadata cache TTL | 10 minutes |
If you exceed the concurrent job limit, the API returns HTTP
429 with an error message indicating the current maximum. Start a new download only after an existing one completes.