本页内容
YouTube 代理下载接口
服务器直接下载 YouTube 媒体直链时,可能收到 403。这个接口返回与 单帖提取 相同的帖子结构,并为符合条件的媒体增加临时代理下载链接。拿到结果后,使用这些链接下载文件。
基本信息
| 项目 | 内容 |
|---|---|
| 接口地址 | https://api.meowload.net/openapi/v1/youtube/proxy-download |
| 请求方式 | POST,请求体为 JSON |
| 鉴权 | Authorization: Bearer <你的 API Key> |
| 计费 | 仅成功(HTTP 200)时扣次数,规则见 开发者管理中心 |
| MCP | youtube_proxy_download,参数与 REST 相同 |
API Key、余额和充值入口都在开发者管理中心。REST 与 MCP 共用 API Key、额度和限流配额。
请求
请求体仅有 url,为必填字符串。接受 youtube.com 与 youtu.be 的 YouTube 链接;不接受其他平台、youtube-nocookie.com 嵌入页或指向 YouTube 的第三方短链。频道、播放列表、直播或受限内容是否能提取,以实际结果为准。
curl --fail-with-body -sS \
https://api.meowload.net/openapi/v1/youtube/proxy-download \
-H "Authorization: Bearer <你的 API Key>" \
-H "Content-Type: application/json" \
--data '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'错误消息默认为英文,需要中文时加 Accept-Language: zh。
成功响应
HTTP 200 的响应体直接是帖子对象,保留原有直链与媒体信息。以下为裁剪后的示例,全部下载地址都是占位符:
{
"site": "youtube",
"id": "EXAMPLE0001",
"post_url": "https://www.youtube.com/watch?v=EXAMPLE0001",
"title": "Scenic tour",
"created_at": "2026-10-06T13:37:04.123Z",
"medias": [
{
"media_type": "video",
"duration": 754,
"resource_url": "https://video.example.com/360p.mp4",
"resource_proxy_url": "https://proxy.example/proxy?payload=RESOURCE",
"variants": [
{
"quality": 1080,
"quality_label": "1080p",
"video_url": "https://video.example.com/1080p.mp4",
"video_ext": "mp4",
"video_proxy_url": "https://proxy.example/proxy?payload=VIDEO",
"audio_url": "https://video.example.com/audio.m4a",
"audio_ext": "m4a",
"audio_proxy_url": "https://proxy.example/proxy?payload=AUDIO"
}
]
}
]
}| 字段 | 位置 | 用途 |
|---|---|---|
resource_proxy_url | medias[] | 下载媒体本体;视频通常是较低清晰度的完整文件,音频则是音频本体 |
video_proxy_url | medias[].variants[] | 下载该档位的视频 |
audio_proxy_url | medias[].variants[] | 下载该档位的独立音频,也用于音频媒体的语言音轨 |
准确时间使用 UTC ISO 8601,保留毫秒;相对时间保留平台原文;缺失时间字段省略。完整帖子字段与时间规则见 单帖提取,完整接口字段见 API 参考。
代理范围
- 识别出的高清视频代理最高为
1080p。更高档位仍可返回直链,但不提供视频代理或配套音频代理;独立音频媒体的语言音轨不受视频清晰度限制。 - 单文件超过
3 GiB(3 × 1024³字节)不提供代理链接,恰好等于上限仍允许。缺少大小或清晰度信息时,不会仅因信息缺失排除代理。 - 没有符合条件的代理文件时,仍可能成功返回普通帖子结果,例如 YouTube 社区图文。若本应有代理链接却全部缺失,接口返回
503 / proxy_unavailable,不扣次数。
下载、合并与续传
选择带 video_proxy_url 的最高可用档位。只按最高 quality 选择,可能选到仅有直链的档位。
原档位同时有 video_url 与 audio_url,表示音视频分离:分别下载视频和音频,再合并。不能仅凭 audio_proxy_url 缺失认定视频已含声音;音频可能未满足代理条件,此时应选择有可用音频代理的档位或音轨。原档位没有独立 audio_url 时,可直接下载视频代理。
ffmpeg -i video.mp4 -i audio.m4a -c copy merged.mp4需要一个现成视频文件时,可使用视频媒体的 resource_proxy_url;只要音频时,使用音频媒体的 resource_proxy_url 或所需语言档位的 audio_proxy_url。
代理 URL 本身就是下载凭证。 下载时不加开发者 API Key,也不把 API Key 发送到下载域名。代理支持 Range,可在同一有效链接上续传:
curl --fail-with-body -sS -D range-headers.txt \
-H "Range: bytes=0-1023" \
--output range.bin "<返回的代理 URL>"范围下载应收到 206 和正确的 Content-Range;续传时把范围起点改为已保存的字节数。流式保存前先检查 HTTP 状态,避免把错误 JSON 保存成媒体文件。错误体请用 GET 检查,HEAD 不返回错误 JSON。
有效期与计费边界
代理链接是临时签名链接,最长有效期为一小时,也受 YouTube 文件链接自身到期时间限制。没有保证的最短可用时间,请在收到结果后尽快下载。
接口取得成功结果时计费,下载和有效期内的续传不再扣次数。重新调用提取接口获取新链接会再次计费;接口没有幂等键,请求超时后重复调用也可能再次扣费。提取已成功但后续下载失败,不会自动退还已扣次数。
开始提取前会检查最低可用额度,返回成功结果前再按实际费用扣次数。实际费用超过余额时返回 402,不扣次数,也不交付结果。具体费用和最低额度只在 开发者管理中心 的「计费规则」维护。
错误处理
提取接口错误
| HTTP 状态 / 错误码 | 处理 |
|---|---|
422 | 检查必填的 url 与 JSON 请求体 |
400 / invalid_url | url 不是有效 URL,修正后再调用 |
400 / unsupported_site | 改用支持的 YouTube 链接 |
401 | 检查 API Key 与 Bearer 请求头 |
402 | 余额不足,充值后再调用;本次不扣次数、不交付结果 |
429 | 达到调用频率限制,稍后再调用 |
503 / proxy_unavailable | 代理暂不可用,retryable: true;本次不扣次数,可稍后重试 |
其他提取错误码见 错误码。MCP 通过工具错误结果返回相同的错误码和可重试语义。
代理下载错误
这些错误来自下载链接,应与提取接口错误分开处理:
| HTTP 状态 / 错误码 | 处理 |
|---|---|
404 / payload_expired | 旧链接已过期,重新提取新链接会再次计费;继续重试旧链接无效 |
YouTube 拒绝请求,例如 403 / upstream_error | 查看 upstream_status;retryable: true 时有限重试或续传,不保证重试成功 |
502 / proxy_failed | 有限重试同一链接 |
403 / content_unavailable | 内容无法获取,停止反复重试 |
通过 MCP 阅读本页时,可调用 get_docs,传入 page: "youtube-proxy-download-api"、lang: "zh"。