接口概览
POST
/api/v1/watermark/parse提交平台分享链接,或包含分享链接的文本,获取统一的内容数据。不同平台和上游通道的可用字段可能不同;已移植平台适配,不代表每个平台始终可用。
抖音小红书快手哔哩哔哩视频号TikTok微博
接口需要 API Key。注册并登录后可在控制台创建密钥。成功解析消耗 1 点,失败不扣。优先使用会员每日额度;会员点数续用需在控制台开启。无会员或会员到期后使用购买点数。支付开放状态以套餐页为准。媒体地址可能过期,也可能受到来源平台访问限制。
快速开始
1
注册登录后,在控制台创建 API Key,并确认服务的基础地址 BASE_URL。
2
通过 Authorization: Bearer YOUR_API_KEY 请求头传入密钥,使用 JSON 提交请求。
3
参考下方调用示例发起请求,确认返回结果后集成到你的应用。
请求参数
| 位置 | 名称 | 必填 | 说明 |
|---|---|---|---|
| Header | Authorization | 是 | Bearer YOUR_API_KEY |
| Header | Content-Type | 是 | application/json |
| Body | text | 是 | 1–4096 字符的分享链接或文本 |
频率限制按密钥配置,默认每分钟 60 次,受保护的 API 请求共用该额度。超过限制返回 HTTP 429。调用日志只记录域名、状态、耗时等诊断字段。
可通过 Idempotency-Key 请求头避免同次请求重试重复扣点;同一账号内幂等键与参数绑定,结果保留 24 小时,过期键不会重新收费。响应头 X-Parse-Request-ID 为原始解析请求 ID,X-Billing-Source 为 member 或 points。通过 GET /api/v1/requests/{请求ID} 查询结果,GET /api/v1/billing 查询额度。接口同步返回解析结果。上游降级可能耗时较长,建议客户端设置 180 秒超时;停止等待不会中止服务端已开始的解析。
调用示例
curl -X POST "$BASE_URL/api/v1/watermark/parse" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"平台分享链接"}' const response = await fetch(
baseUrl + "/api/v1/watermark/parse", {
method: "POST",
headers: {
Authorization: "Bearer " + apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({ text: shareUrl }),
}
);
const result = await response.json();import requests
response = requests.post(
base_url + "/api/v1/watermark/parse",
headers={"Authorization": f"Bearer {api_key}"},
json={"text": share_url},
timeout=180,
)
result = response.json()
返回结构
以下仅展示结构。视频、图集、音频按内容类型返回;没有对应内容的字段可以为空。
{
"code": "OK",
"message": "成功",
"request_id": "唯一请求标识",
"data": {
"video_id": "内容 ID",
"platform": "抖音",
"title": "内容标题",
"video_url": "https://媒体地址",
"cover_url": null,
"images": [],
"audio_url": null,
"author": {},
"subtitles": null,
"subtitle_status": 0
}
}| data 字段 | 类型 | 说明 |
|---|---|---|
video_id | string | 内容 ID |
platform | string | 识别到的内容平台 |
title | string | 标题与文案 |
video_url | string | null | 视频地址,部分链接有有效期 |
images | array | 图片地址或包含 url、live_photo_url 的实况图片对象 |
audio_url | string | null | 背景音频地址 |
cover_url | string | null | 封面地址 |
author | object | 作者信息,字段依上游可用内容返回 |
video_list | array(可选) | 包含多个视频时返回的视频地址列表 |
subtitles | object | array | string | null | 上游提供的字幕数据,未提供时为 null |
subtitle_status | integer | 字幕状态,未提供时默认为 0 |
调用记录
GET
/api/v1/usage携带相同的 Bearer API Key,查询该密钥最近 50 次解析记录。记录包含请求 ID、平台、状态、耗时和时间。开发密钥不写入调用记录。
在控制台查看调用日志错误码说明
| HTTP | code | 说明 |
|---|---|---|
| 400 | INVALID_INPUT / INVALID_URL | 参数或分享链接无效 |
| 400 | UNSUPPORTED_PLATFORM / DIRECT_MEDIA_LINK | 平台未接入,或提交了媒体文件直链 |
| 400 | INVALID_VIDEO_ID | 无法识别内容 ID |
| 401 | UNAUTHORIZED | 密钥无效、缺失或已停用 |
| 402 | QUOTA_EXHAUSTED | 可用额度不足,购买点数或开启会员点数续用 |
| 403 | ACCOUNT_REQUIRED | 请使用账号名下的 API Key |
| 409 | IDEMPOTENCY_CONFLICT / REQUEST_PROCESSING | 幂等键参数冲突或原请求仍在执行 |
| 410 | RESULT_EXPIRED | 结果超过 24 小时查询期限 |
| 415 | INVALID_CONTENT_TYPE | 请使用 JSON 请求体 |
| 429 | RATE_LIMITED | 请求频率超限 |
| 502 | PARSE_FAILED | 所有可用解析通道均失败 |
| 503 | DATABASE_UNAVAILABLE | 数据库暂时不可用 |
| 500 | INTERNAL_ERROR | 服务内部异常 |
排查问题时请保留 request_id,避免在反馈中发送完整 API Key。