API 文档
概述
短视频去水印API提供统一的视频解析接口,支持抖音、TikTok、小红书、快手、B站等主流短视频平台。开发者只需传入视频链接或分享口令,即可获取无水印视频下载地址。
Base URL:
https://your-domain.com
认证方式
API调用需要在请求头中携带API Key:
X-API-Key: wh_your_api_key_here
获取API Key的步骤:
- 注册账号并登录
- 进入控制台查看API Key
- 如需重新生成,可在控制台操作
请妥善保管API Key,不要泄露给他人。如发现泄露,请立即重新生成。
视频解析接口
POST /api/v1/parse
通过POST方式解析视频,适合程序调用。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 视频链接或分享口令 |
请求示例:
curl -X POST https://your-domain.com/api/v1/parse \
-H "Content-Type: application/json" \
-H "X-API-Key: wh_your_api_key_here" \
-d '{"url": "https://v.douyin.com/xxxxx/"}'
响应示例:
{
"success": true,
"platform": "douyin",
"platform_name": "抖音",
"title": "视频标题",
"author": "作者昵称",
"cover_url": "https://...",
"video_url": "https://...",
"video_urls": ["https://..."],
"music_url": "https://...",
"images": [],
"message": ""
}
GET /api/v1/parse
通过GET方式解析视频,适合浏览器直接调用。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 视频链接(需URL编码) |
请求示例:
curl "https://your-domain.com/api/v1/parse?url=https%3A%2F%2Fv.douyin.com%2Fxxxxx%2F" \
-H "X-API-Key: wh_your_api_key_here"
POST /api/parse
网页端解析接口,需要登录后才能使用,每个用户每日免费3次解析额度。
此接口需要 Bearer Token 认证,请先登录获取 Token。
下载说明
解析成功后,API 会返回原始平台的视频下载地址。由于部分平台有防盗链机制,下载方式有所不同:
| 平台 | 下载方式 | 说明 |
|---|---|---|
| 抖音 | 复制链接到浏览器 | 有防盗链,需复制链接到浏览器地址栏打开 |
| 其他平台 | 直接点击下载 | 可直接点击下载按钮保存视频 |
所有平台都支持复制视频链接,可使用下载工具或浏览器扩展进行下载。
错误码
| HTTP状态码 | 说明 |
|---|---|
| 200 | 请求成功 |
| 400 | 请求参数错误 |
| 401 | 未认证或API Key无效 |
| 403 | 账号被禁用或权限不足 |
| 422 | 参数验证失败 |
| 500 | 服务器内部错误 |
支持平台
| 平台 | 标识 | 链接格式 |
|---|---|---|
| 抖音 | douyin | v.douyin.com, www.douyin.com |
| TikTok | tiktok | www.tiktok.com, vm.tiktok.com |
| 小红书 | xiaohongshu | www.xiaohongshu.com, xhslink.com |
| 快手 | kuaishou | www.kuaishou.com, v.kuaishou.com |
| 哔哩哔哩 | bilibili | www.bilibili.com, b23.tv |
| 微博 | weibo.com, m.weibo.cn | |
| 今日头条 | toutiao | www.toutiao.com |
| 西瓜视频 | xigua | www.ixigua.com |
| 皮皮虾 | pipixia | www.pipix.com |
代码示例
Python
import requests
API_KEY = "wh_your_api_key_here"
BASE_URL = "https://your-domain.com"
def parse_video(url):
headers = {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
}
data = {"url": url}
response = requests.post(f"{BASE_URL}/api/v1/parse", json=data, headers=headers)
return response.json()
result = parse_video("https://v.douyin.com/xxxxx/")
if result["success"]:
print(f"标题: {result['title']}")
print(f"作者: {result['author']}")
print(f"视频链接: {result['video_url']}")
else:
print(f"解析失败: {result['message']}")
JavaScript
const API_KEY = 'wh_your_api_key_here';
const BASE_URL = 'https://your-domain.com';
async function parseVideo(url) {
const response = await fetch(`${BASE_URL}/api/v1/parse`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
},
body: JSON.stringify({ url })
});
return await response.json();
}
const result = await parseVideo('https://v.douyin.com/xxxxx/');
if (result.success) {
console.log(`标题: ${result.title}`);
console.log(`视频链接: ${result.video_url}`);
} else {
console.log(`解析失败: ${result.message}`);
}
PHP
<?php
$apiKey = 'wh_your_api_key_here';
$baseUrl = 'https://your-domain.com';
function parseVideo($url) {
global $apiKey, $baseUrl;
$data = json_encode(['url' => $url]);
$opts = [
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/json\r\n" .
"X-API-Key: $apiKey\r\n",
'content' => $data
]
];
$context = stream_context_create($opts);
$result = file_get_contents("$baseUrl/api/v1/parse", false, $context);
return json_decode($result, true);
}
$result = parseVideo('https://v.douyin.com/xxxxx/');
if ($result['success']) {
echo "标题: {$result['title']}\n";
echo "视频链接: {$result['video_url']}\n";
} else {
echo "解析失败: {$result['message']}\n";
}
?>