# Video Downloader API

> Download links, sizes and formats for YouTube and Vimeo videos.

**Retired on 15 Sep 2026.** This endpoint is retired as of 15 September 2026. It receives no further fixes or support and may be switched off without further notice. Remove it from existing integrations; no replacement is offered.

Resolves a YouTube or Vimeo page URL to its downloadable media streams. Each result lists the quality label, container format, a direct media URL and the file size.

- **Endpoint:** `GET https://api.zactonz.com/tuber/v1/`
- **Category:** Video
- **Version:** 1
- **Status:** retired
- **Reference page:** https://developers.zactonz.com/apis/video-downloader/

## Parameters

Send parameters in the query string.

| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| `key` | string | yes |  | Your API key, repeated as a query parameter. Kept for existing integrations; the `Authorization: Bearer` header is the supported way to authenticate. |
| `url` | string | yes |  | The YouTube or Vimeo video page URL. |

## Response

The thumbnail and one entry per available stream.

| Field | Type | Description |
|---|---|---|
| `status` | string | `"200"` on success (a string). See status codes below. |
| `message` | string | Present on errors only. |
| `thumbnail` | string | Thumbnail image URL. |
| `results` | array of object |  |
| `results[].quality` | string | Quality label, e.g. `720p`. |
| `results[].format` | string | Container format, e.g. `mp4`. |
| `results[].url` | string | Direct media URL. Short-lived. |
| `results[].size` | number | File size in megabytes, rounded to two decimals. |
| `results[].o_size` | integer | File size in bytes. |
| `results[].title` | string | Video title. |

```json
{
    "status": "200",
    "thumbnail": "https://img.youtube.com/vi/oeCihv9A3ac/default.jpg",
    "results": [
        {
            "quality": "720p",
            "format": "mp4",
            "url": "https://rr3---sn-example.googlevideo.com/videoplayback?…",
            "size": 24.61,
            "o_size": 25806438,
            "title": "Sample video"
        },
        {
            "quality": "360p",
            "format": "mp4",
            "url": "https://rr3---sn-example.googlevideo.com/videoplayback?…",
            "size": 9.13,
            "o_size": 9574112,
            "title": "Sample video"
        }
    ]
}
```

## Status codes

The outcome is reported in the JSON `status` field. General rules: https://developers.zactonz.com/apis/errors.md

| status | Meaning | Description |
|---|---|---|
| `200` | OK | Streams were found. An empty `results` list with status `200` means the video has no downloadable formats. |
| `502` | Could not read that video | The page could not be parsed. Check the URL is a public video. |
| `503` | Upstream unavailable | The extraction route is currently blocked by the video host. Retry later; `message` has details. |
| `null` | Rejected | `key` was missing or invalid, or `url` was missing. |

## Notes

Direct media URLs returned in `results[].url` expire after a short time; fetch them promptly rather than storing them. Sizes are looked up with a `HEAD` request per stream, so a video with many formats can take several seconds to answer.

Requests without a valid `key` or `url` return `"status": null` and an empty `results` list.
