哼哼猫文档
本页内容

YouTube 代理下载接口

服务器直接下载 YouTube 媒体直链时,可能收到 403。这个接口返回与 单帖提取 相同的帖子结构,并为符合条件的媒体增加临时代理下载链接。拿到结果后,使用这些链接下载文件。

基本信息

项目内容
接口地址https://api.meowload.net/openapi/v1/youtube/proxy-download
请求方式POST,请求体为 JSON
鉴权Authorization: Bearer <你的 API Key>
计费仅成功(HTTP 200)时扣次数,规则见 开发者管理中心
MCPyoutube_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_urlmedias[]下载媒体本体;视频通常是较低清晰度的完整文件,音频则是音频本体
video_proxy_urlmedias[].variants[]下载该档位的视频
audio_proxy_urlmedias[].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_urlurl 不是有效 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"。