/download
Downloads audio or video from a YouTube URL or video ID. Available as both GET and POST — same behavior, different place for the parameters.
GET/download
Parameters are sent in the query string.
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | required | A full YouTube URL (youtube.com/watch?v=… or youtu.be/…) or a bare video ID. |
| type | string | required | Either audio or video. |
| api_key | string | required | Your API key. See authentication. |
curl
curl "https://yt-dow.co08.art/download?url=https://youtu.be/dQw4w9WgXcQ&type=audio&api_key=YOUR_API_KEY" \
-o song.m4a
POST/download
Same parameters, sent as JSON in the request body.
| Field | Type | Required | Description |
|---|---|---|---|
| url | string | required | Full YouTube URL or bare video ID. |
| type | string | required | Either audio or video. |
| api_key | string | required | Your API key. |
curl
curl -X POST "https://yt-dow.co08.art/download" \
-H "Content-Type: application/json" \
-d '{
"url": "https://youtu.be/dQw4w9WgXcQ",
"type": "video",
"api_key": "YOUR_API_KEY"
}' \
-o video.mp4
The body must be valid JSON, or you'll get back 400 Invalid JSON.
Response
On success (200), the response body is the file itself — not JSON. The Content-Type reflects the actual format returned:
| type | Possible Content-Type |
|---|---|
| audio | audio/webm, audio/mp4, or audio/mpeg |
| video | video/mp4, video/x-matroska, or video/webm |
The file is served inline with a filename of {video_id}.{ext}, so saving the response body to disk (as in the examples above) gives you a usable file.
Errors
| Status | detail | Cause |
|---|---|---|
| 400 | Type must be audio or video | type is anything other than audio/video |
| 400 | Invalid video URL or ID | url couldn't be resolved to a video |
| 400 | Invalid JSON | POST body isn't valid JSON |
| 401 | API key required | No api_key sent |
| 401 | Invalid API key | Key doesn't exist |
| 403 | API key is inactive or expired | Key has been deactivated |
| 403 | API key has expired | Past its expiry date |
| 403 | API key is temporarily blocked | Key is under a temporary block |
| 403 | Access denied | Account restricted |
| 429 | Daily quota exhausted | Daily request limit reached |
| 500 | Download failed | The source video couldn't be fetched |
See errors & rate limits for IP-level responses like 429 Too many requests.