AI 消除(去字幕/去水印)
● 服务正常
按量计费
POST
视频大模型
文档 doc/114
AI 无痕消除视频字幕、水印、台标,不是简单裁剪或模糊,画面其余部分保持不变。最大支持 10 分钟视频。
POSThttps://api.vidtidy.cn/api/v1/eraser
鉴权:请求头 X-API-KEY: sk_live_…(也支持 key 查询参数)。
请求参数
| 名称 | 必填 | 类型 | 说明 |
fileUrl | 必填 |
string | 视频直链,需 URL Encode |
duration | 选填 |
number | 视频时长(秒),不传则自动探测 |
callbackUrl | 选填 |
string | 处理完成回调地址(可选) |
返回参数
| 名称 | 类型 | 说明 |
data | string | 任务 id |
cost | string | 本次扣费金额(元,4 位小数) |
balance | string | 扣费后账户余额(元) |
返回示例
{
"code": 200,
"msg": "SUCCESS",
"data": "task_9a1b77",
"cost": "0.2250",
"balance": "48.3025"
}
说明:异步接口。fileUrl 必须是可直接下载的视频直链,平台页面链接请先调「视频去水印下载」拿到直链。
计费口径
| 项目 | 说明 |
| 计费方式 | 按媒体时长计费,向上取整到秒 |
| 我方单价 | 0.0075 元/秒 |
| 上游原价 | 0.005 元/秒(我方含接入、重试、对账与技术支持的加价部分) |
| 预扣与退款 | 按秒/按字类接口在提交时预扣,上游返回业务失败码时 全额自动退回,无需申请 |
| 免费接口 | 任务查询类接口永远免费,高频轮询不会产生费用 |
| 最低余额 | 余额不足以支付本次预扣时会直接返回 402,不会先调用上游再报错 |
时长怎么算:优先用请求里的 duration;不传则服务端用 ffprobe 探测;探测失败按 180 秒兜底预扣。探测到的实际时长若超过你传入的值,按实际值结算。
错误码
| code | 含义 | 处理建议 |
200 | 成功 | — |
-1 | 业务异常 | 见 msg。链接不支持 / 文件不可下载 / 时长超限最常见 |
401 | 密钥无效 | 检查请求头,或到控制台确认密钥未停用 |
402 | 余额不足 | 充值后重试,本次不扣费 |
429 | 频率超限 | 按 20 次/秒 退避 |
500 | 服务异常 | 上游故障,已自动退款 |
cURL
curl -X POST "https://api.vidtidy.cn/api/v1/eraser" \
-H "X-API-KEY: sk_live_你的密钥" \
-d "fileUrl=示例值" \
-d "duration=示例值" \
-d "callbackUrl=示例值"
Python
import requests
r = requests.post(
"https://api.vidtidy.cn/api/v1/eraser",
headers={"X-API-KEY": "sk_live_你的密钥"},
data={"fileUrl": "示例值", "duration": "示例值", "callbackUrl": "示例值"},
timeout=120,
)
print(r.json())Node.js
const body = new URLSearchParams({
"fileUrl": "示例值",
"duration": "示例值",
"callbackUrl": "示例值",
});
const res = await fetch("https://api.vidtidy.cn/api/v1/eraser", {
method: "POST",
headers: { "X-API-KEY": "sk_live_你的密钥" },
body,
});
console.log(await res.json());PHP
true,
CURLOPT_HTTPHEADER => ["X-API-KEY: sk_live_你的密钥"],
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(["fileUrl" => "示例值", "duration" => "示例值", "callbackUrl" => "示例值"]),
]);
$out = curl_exec($ch);
curl_close($ch);
echo $out;