开放 API把服务端工具接到你自己的系统里
用 Bearer 密钥调用需要服务端的那批工具:HEIC / TIFF / RAW / AVIF 转图、PDF 处理、视频转码与转 GIF、GIF 拆帧与倒放、图片降噪。上传 → 拿任务号 → 轮询 → 下载结果,四步走完。
一、鉴权
每个请求都带上密钥:
Authorization: Bearer tdd_xxxxxxxxxxxxxxxx
密钥只发给登录用户(游客拿不到,否则等于给匿名流量开一条绕过页面限流的路)。明文只在创建那一屏出现一次,服务端只存 sha256——忘了只能重新生成。
二、调用流程
- 建任务:
POST /api/v1/tasks,multipart 表单字段tool(工具代号)、file(多文件用files[])、params(JSON 字符串) - 查状态:
GET /api/v1/tasks?no=任务号,status 为 done 时返回 result.url - 下结果:
GET /api/v1/results?no=任务号,同样带 Bearer 头 - 看用量:
GET /api/v1/usage,返回今日额度与本分钟已用次数
示例(HEIC 转 JPG):
curl -X POST https://www.tdd8.cn/api/v1/tasks \
-H "Authorization: Bearer tdd_xxx" \
-F "tool=convert_heic" \
-F "params={\"format\":\"jpg\"}" \
-F "file=@photo.heic"
# 返回 {"ok":true,"task_no":"T2026...","status":"pending","left":19,"ttl":7200}
curl -H "Authorization: Bearer tdd_xxx" \
"https://www.tdd8.cn/api/v1/tasks?no=T2026..." # 查状态
curl -H "Authorization: Bearer tdd_xxx" -o out.jpg \
"https://www.tdd8.cn/api/v1/results?no=T2026..." # 下载
工具代号就是各工具页的 code,例如 convert_heic、pdf_to_jpg、 video_convert、gif_reverse、denoise。 只有在浏览器里跑不动、必须服务端处理的工具才开放 API,传本地工具代号会返回 404。
三、额度与限流
- 额度:和网页共用同一份——免费用户 20 次/天,会员按套餐(200 起),每天 0 点重置。一个文件算一次。
- 限流:每个密钥每分钟最多建 你创建时选的那个值 个任务,超限返回 429 并带
Retry-After: 60。 - 并发:同一密钥最多 3 个任务在排队或处理中,超了返回 429。
- 结果保留:跟随账号——免费 2 小时,会员 24 小时 / 72 小时 / 7 天,过期文件被清理,接口返回 410。
- 计费:目前不单独收费,API 与网页共用额度;后续若推出按调用量计费的套餐,会另行公告,不会默默改规则。
四、错误码
| 状态码 | 含义 | 怎么处理 |
|---|---|---|
| 401 | 没带密钥 / 密钥无效 / 已吊销 | 检查 Authorization 头,或重新生成密钥 |
| 404 | 工具不存在、不需要服务端处理,或任务不属于这个密钥 | 确认工具代号;任务只能由创建它的密钥查 |
| 409 | 任务还没完成 | 继续轮询,别急着下载 |
| 410 | 结果已过期被清理 | 重新提交任务 |
| 413 | 文件超过体积上限(图片 20MB、视频 100MB) | 先压缩或截短 |
| 415 | 不支持的格式 | 支持 JPG/PNG/WebP/GIF/BMP/TIFF/AVIF/HEIC/PDF/MP4 |
| 422 | 参数不合法(如合并任务混了格式) | 按提示调整后重试 |
| 429 | 额度用完 / 触发限流 / 排队已满 | 看返回的 limit、used 与 Retry-After |
五、我的密钥
常见问题
为什么只能调服务端工具?
压缩、改尺寸、水印、裁剪这些在浏览器本地就能完成,不需要服务端算力,做成接口反而多一次上传。开放的是浏览器做不到或做不好的那批:HEIC 解码、PDF、视频转码、GIF 拆帧、降噪。
密钥泄露了怎么办?
在这一页立刻吊销,旧密钥马上返回 401,再新建一个换上。用旧密钥建过的任务仍然可以查询和下载,不受影响。
会单独收费吗?
现在不收费,API 与网页共用同一份每日额度。后续若推出按调用量计费的套餐,会先公告再生效。
结果文件能被人猜到吗?
下载链接只认任务号 + 归属:任务号是 20 位带随机的字符串,且必须与密钥所属用户一致,别人拿到链接也下不了。