TAPSAVE OPEN API

通过一个接口接入媒体解析

使用稳定的单链接 REST API 解析公开媒体。只有成功返回可用资源时扣减一次额度,失败不扣费。

REST / JSON单一解析端点失败不扣费
POST /openapi/parse
curl -X POST https://api.videotool.cc/openapi/parse \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://..."}'
200 OK1 次额度

01 · 快速开始

发起解析请求

在请求头中加入 API Key,并在 JSON 请求体中提交一个公开媒体链接。

curl -X POST https://api.videotool.cc/openapi/parse \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://..."}'

02 · 身份验证

使用 API Key 鉴权

接口通过 X-API-Key 请求头认证,每个账号可在控制台查看或更新密钥。

X-API-KeyYOUR_API_KEY

API Key 应只保存在服务端,不要写入网页 JavaScript、移动端安装包或公开仓库。

03 · 接口说明

当前可用接口

POST/openapi/parse单链接解析

解析一个公开媒体链接

提交一个公开帖子或视频链接。成功获得可用资源后扣减一次额度,其他结果不扣费。

urlstring · required公开帖子或视频链接

04 · 响应结构

成功响应

成功时返回 AjaxResult 包装的 ParseResult,资源按视频、图片、音频和文本分类。

{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "resultCode": 0,
    "hasResource": true,
    "resourceType": 200,
    "descList": ["..."],
    "imgList": [],
    "videoList": [],
    "audioList": []
  }
}

响应字段说明

字段可能因来源平台和资源类型而为空。应先判断 code、data.resultCode 和 data.hasResource,再读取对应资源列表。

codenumberHTTP 业务状态码;200 表示本次请求成功。
msgstring请求处理提示;失败时包含可供展示的原因。
data.resultCodenumber解析结果码;0 表示解析成功。
data.resultMsgstring | null解析结果说明;解析成功时通常为 null。
data.hasResourceboolean是否取得至少一项可用资源;仅为 true 时会扣减一次额度。
data.resourceTypenumber资源类型标识,由解析平台返回;应结合资源列表判断实际内容。
data.parseBynumber | null解析来源或方式标识;仅作展示和诊断,不应作为资源选择依据。
data.ffmpegCmdstring | null平台要求本地转码时返回的 FFmpeg 命令模板;普通浏览器播放无需执行。
data.headersobject直接请求原始媒体地址时可能需要附带的请求头;使用 webProxyUrl 时通常无需自行处理。
data.canWatchAdboolean是否允许通过广告获取解析权益;开放接口调用方通常无需使用。
data.showProxyboolean是否配置普通下载代理;仅与 proxyBaseUrl、普通代理签名配合使用。
data.proxyBaseUrlstring | null普通下载代理地址,不是 Web 展示代理;Web 页面优先使用 webProxyUrl。
data.timestampnumber本次解析生成的毫秒时间戳;拼接 Web 代理地址时必传。
data.webProxyUrlstring | nullWeb 展示代理基础地址;有值时拼接 /res/dl,空值时直接使用资源 URL。
data.packageDownloadUrlstring | null普通打包下载基础地址;仅用于 /res/zip 和生成包的 /static 路径。
data.vipProxyBaseUrl / data.vipDownloadStatusstring | nullVIP 极速下载信息;开放接口普通解析不应依赖这些字段。
data.vipPackageDownloadUrl / data.vipPackageDownloadStatusstring | nullVIP 打包下载信息;开放接口普通解析不应依赖这些字段。
data.descList[]string[] | null原帖文案、标题或补充描述列表。
data.authorstring | null小红书作者昵称;其他平台或上游未提供时为空。
data.publishTimestring | null小红书发布时间,格式 yyyy-MM-dd HH:mm:ss;不做时区换算。
data.publishTimestampnumber | null小红书发布时间戳,单位为秒。
data.imgList[].urlstring图片原始可访问地址;webProxyUrl 为空时可直接展示。
data.imgList[].origUrlstring | null图片原始来源地址;缺失时通常与 url 相同。
data.imgList[].imgHashstring | null普通代理图片签名;仅在 webImgHash 缺失时作为兼容回退。
data.imgList[].webImgHashstring | nullWeb 代理图片签名;与 url、timestamp 一起拼接展示地址。
data.imgList[].videoUrlstring | null图片条目关联的视频地址,例如图文内容中的视频资源。
data.imgList[].videoHash / webVideoHashstring | null关联视频的普通 / Web 代理签名;使用规则与图片签名相同。
data.videoList[].idstring | null视频资源标识,可用于列表渲染或去重。
data.videoList[].urlstring视频原始可访问地址;webProxyUrl 为空时可直接播放。
data.videoList[].origUrlstring | null视频原始来源地址;缺失时通常与 url 相同。
data.videoList[].width / heightstring | null视频宽高,单位为 px;上游未提供时为空。
data.videoList[].webVideoHashstring | nullWeb 代理视频签名;缺失时兼容使用 videoHash。
data.videoList[].audioUrlstring | null与视频分离的音频原始地址,无独立音轨时为空。
data.videoList[].webAudioHashstring | nullWeb 代理音频签名;缺失时兼容使用 audioHash。
data.videoList[].descstring | null该视频资源的补充说明。
data.audioList[].urlstring独立音频原始地址。
data.audioList[].origUrlstring | null独立音频原始来源地址。

05 · 代理地址

使用 Web 展示代理地址

webProxyUrl 有值时,浏览器可将媒体地址转为代理地址,以处理跨域或来源防盗链限制;为空时直接使用资源原始地址。

const data = result.data;
const video = data.videoList[0];
const rawUrl = video.url;

const displayUrl = data.webProxyUrl
  ? data.webProxyUrl.replace(/\/+$/, '')
    + '/res/dl?url=' + encodeURIComponent(rawUrl)
    + '&hash=' + (video.webVideoHash || video.videoHash)
    + '&timestamp=' + data.timestamp
  : rawUrl;

// <video src={displayUrl} controls />
签名与资源类型规则

图片使用 webImgHash(缺失时兼容 imgHash);视频使用 webVideoHash(缺失时兼容 videoHash);视频音频使用 webAudioHash(缺失时兼容 audioHash)。每次解析都必须使用本次返回的 timestamp 和 hash;不要把 webProxyUrl 用于 /res/zip 打包下载。

06 · 错误处理

业务错误码

code含义扣费
400url 参数为空或格式无效不扣费
401API Key 缺失、无效或已停用不扣费
403剩余调用次数不足不扣费
422解析完成但没有可用资源不扣费
500解析服务异常不扣费

07 · 计费规则

按成功结果计费

1成功并返回可用资源时扣减
0失败、异常或无资源时扣减
当前能力范围

开放接口仅提供 POST /openapi/parse 单链接解析,不提供批量、能力查询、幂等缓存或限流端点。