商城里的 全平台视频元数据解析服务 是一条接口,不是按平台拆十八套地址。你把分享链接(或整段口令)交给它,它按域名自动识别平台,返回标题、封面、作者、互动数,以及第三方 CDN 上的媒体地址。完整字段在该页「接口文档」,以及 原始文档。页上协议写得很清楚:这是元数据解析,不存片、不当下载站。接到产品里只做自己内容的备份、审核、研究;不要拿它做公开搬运、聚合下载。
地址只有一条,方法是 GET:
GET https://v1.apizero.cn/api/video-parse
密钥在 API Key 建。头写成 Authorization: Bearer 你的密钥。也认 X-API-Key,以及 Query api_key / apikey。这条标成付费,匿名也可以不带头,额度更低。不要把 Key 写进页面或安装包。网关也认 POST(url / flat 放 JSON 或表单),接到项目时按文档走 GET 查询串即可。
先不用写代码。打开 短视频解析 贴一条自己能打开的链接,看清卡片和 JSON 再来订阅。也可以用商城「在线调试」或 接口调试 打一次。在线调试是真调用,会计入当日额度。
每次都要带 url,并显式写 flat=1
必填只有 url,最长 2048 字符。完整页、短链、从 App 复制出来的整段口令都行:口令里夹着中文时,接口会抽出第一个 http:// / https://。没有链接才会报「url 格式无效」。
flat 一定要写成 `1`。新接入读的是单层 data:title、video_url、cover_url 都在顶层。商城调试框会预填 1,文档示例也是 1。但网关里不传时按 0 处理,会变成双层 data.data。页上有的地方写「默认 1」,以实际回包为准,别赌缺省值。
flat=0 只留给已经上线的旧客户端。新项目不要用。
export APIZERO_API_KEY="你的密钥"
curl -sS -H "Authorization: Bearer $APIZERO_API_KEY" \
--get "https://v1.apizero.cn/api/video-parse" \
--data-urlencode "flat=1" \
--data-urlencode "url=https://www.bilibili.com/video/BV1GJ411x7h7"成功时最外层 code 为 0,正文在 data。同一条链接大约 5 分钟内可能走缓存,连打没有意义。返回的媒体地址是第三方 CDN,带过期参数,过一会儿会失效,不要当永久文件存。
平台不用你选
一条请求只解析一条链接。平台看 host,不要自己猜 platform 再传一遍——这个接口没有平台参数。
国内常见:抖音(v.douyin.com / www.douyin.com)、快手、小红书(含 xhslink.com)、B 站(含 b23.tv)、微博、皮皮虾、西瓜、好看。
海外:TikTok、YouTube(含 Shorts、youtu.be)、Instagram、Twitter / X、Facebook。
另外三类按链接走独立链路:豆包分享(视频或对话图)、千问图片、可灵 AI 分享页。
左侧子文档(「抖音短链解析」「B 站视频解析」……)只是同一条地址换示例链接,不是另一套 URL。接到项目只打 /api/video-parse。
私密、会员专享、已删除、对方关了可见范围,都会失败。换一条你浏览器能直接打开的公开链接再试。
视频:先读这几项
data.type 常见是「视频」。卡片够用的字段:
platform:douyin/kuaishou/xiaohongshu/bilibili/tiktok/youtube等。好看有时会直接写成域名,不要写死枚举titlevideo_url:当前选中的最优可播地址。优先用它预览cover_url:封面。快手等平台有时为空,用video_list里第一条凑合,或只展示标题audio_url:多数平台是空字符串。抖音有时会给一条配乐 mp3,没有就别展示stats:author_name、author_avatar、like_count/comment_count/share_count/play_count/collect_count、publish_time。缺的项是0或空字符串,不要当成接口坏了video_list:多清晰度。每条有quality、url、size、resolution
B 站列表里,带「含音频·可直接播放」的那条才是能直接丢给 ` 的 mp4。标成「原画 1080P」却是 .m4s` 的,是分离音视频,浏览器不能单文件播,审核预览不要点它。
海外平台的 video_url 有时会改写成走本站代理的地址(避免浏览器直开 googlevideo / tiktokcdn 失败)。这仍是播放用的临时链,不是你的图床。
图文:看 imagelist,不要盯 video_url
type 为「图文」或「图集」时,video_url 常常是空的。读:
imagelist:图片数组,元素可能是字符串 URL,也可能是带url/width/height的对象- 豆包对话、千问分享还会出现
images(或data.images展平后的同名字段)
小红书笔记两种都有。视频笔记走 video_url;图文笔记走 imagelist。不要两种都空才报错——先看 type。
source 必须给用户看见
每次成功都会带 data.source:
platform_label:中文平台名original_url:原始分享链author_namecopyright_notice/usage_restrictiondisclaimer_url:指回商城页dmca_contact
协议要求最终界面展示来源,不要藏掉。自己的后台审核页至少显示平台名、原链、作者。最外层还会有统一的 tips。
接到自己的网站
浏览器只打你的后端。服务器再带 Key 去 v1.apizero.cn。用户贴进来的链接原样转发,不要在前端拼 Key。
async function parseVideo(shareUrl) {
const q = new URLSearchParams({ flat: "1", url: shareUrl });
const res = await fetch(`https://v1.apizero.cn/api/video-parse?${q}`, {
headers: { Authorization: `Bearer ${process.env.APIZERO_API_KEY}` },
});
const json = await res.json();
if (json.code !== 0) throw new Error(json.msg || "video-parse failed");
return json.data;
}
const data = await parseVideo(userPaste);
const playUrl = data.video_url || "";
const images = []
.concat(data.imagelist || [])
.concat(data.images || [])
.map((item) => (typeof item === "string" ? item : item?.url))
.filter(Boolean);列表卡片:封面 + 标题 + 作者 + 平台。点进去再播 video_url,或翻 imagelist。App、小程序同样把请求放在服务端。回包用 JSON 工具 抽 data.title、data.video_url、data.source 核对一次再抄进项目。
直链过期就再解析一次,不要把 CDN 地址写进数据库当永久资源。缓存标题、封面、原链可以;缓存播放地址最多几分钟。
额度
这条按次计,解析一次算一次(缓存命中仍可能已在首次计入)。具体每日次数和 QPS 看商城页「访问限制」,以当时页上的为准。写这篇时:
- 不带头:每日 3 次,QPS 1
- 登录免费(带 Key):每日 5 次,QPS 3
- 黄金会员:每日 20,000 次,QPS 10
- 企业会员:每日 1,000,000 次,QPS 120
免费次数用完再看套餐。工具页、在线调试都是真调用。
常见卡住
缺少必填参数 url:Query / 正文里没有urlurl 过长(最大 2048 字符):整段口令太长,只留链接再发url 格式无效:没有http://或https://。纯 BV 号、纯数字 ID 不行,要完整链接url 解析失败,请检查链接格式:host 都抽不出来,检查复制有没有截断- 外层
code不是 0,文案含「解析失败」「链接有效且未过期」:内容下架、要登录、或该平台暂时失败。code常见5020/5021/5030 小红书访问频繁:上游限流,隔一会儿再试,不要连打同一条- 成功但
video_url为空:先看type是不是图文;再看imagelist。B 站则看video_list里带音频的那条 flat=0时找不到data.title:标题在data.data.title。新代码改传flat=1- 浏览器
Failed to fetch:页面直连了网关。改成打你自己的后端,或用接口调试代发 - 次数用完:看该接口今日已用
- 播不了:CDN 过期或 Referer 限制。再解析拿新地址;不要把别人的片做成公开下载页
字段对过、额度还在,再接到网站。换平台只换 url,地址不用换。完整条款以商城页「免责声明」为准。