发出第一次请求
四步,不用读完整本手册。先要一个免费账号,只要一个邮箱。
1选接入方式
大多数开发者从 REST API 开始。
2拿到 API 密钥
免费注册,只要一个邮箱。密钥只显示一次,我们不存原文。
3发出第一次请求
填一个你有权使用的视频和能接受的语言,下面的代码会跟着变。
用你自己的或已获授权的视频。留空会保留占位符 VIDEO_ID。
按这个顺序依次找,不会加你没写的语言。
json、text、srt、vtt 都支持。
将密钥放进 TEXTFROM_API_KEY 环境变量。每次请求计入每月的 1,000 次。选定域名后服务地址可能变化。
需要译文?在取字幕的请求里加 translate=zh(或 es、fr、ja 等语言代码)。这是免费的机器翻译,质量有波动,字幕会合并成约 240 字的段落返回(delivered.source 是 “translated”,delivered.segmentation 是 “merged”)。每次计 1 次请求,外加每月翻译额度里的 1 次。超过约 10 分钟的视频会返回 translation_too_long,中文译文可能混用简体和繁体;翻译失败就是报错,不会给你原文。字幕本来就是目标语言时原样返回。
4读懂结果和错误
成功 = 拿到了你列表里某个语言的轨。先看这两个字段。
示例成功 · 200
{ "data": {
"requested": { "lang": ["en-US","en"] },
"delivered": { "lang": "en",
"kind": "auto" },
"segments": [ … ] },
"meta": { "request_id": "req_example_01" } }
示例出错 · 404
{ "error": {
"category": "verdict",
"code": "language_not_available",
"retryable": false,
"details": { "available": [ … ] } },
"meta": { "request_id": "req_example_02" } }
language_not_availableverdict · 404视频没有你列出的语言。看 details.available,自己决定改哪个语言;我们不会替你换。不要原样重试。no_captionsverdict · 404
video_unavailable
video_restricted视频确实没有字幕,或者视频不可用、受限制。换一个视频;不要重试。upstream_errortransport · blocked · 503
upstream_refused临时故障,不是“没有字幕”。等 Retry-After 指定的秒数再重试;不要连续猛刷。not_supportedunsupported · 400这个请求我们做不到,例如语音转写,或译文的原语言翻译器不认识。去掉那个选项;重试没用。translation_too_longinvalid_request · 400这个视频太长,没法一次翻译完。请直接取原语言字幕,或换短一点的视频。rate_limit_exceededaccount · 429每分钟超过 5 次。等 Retry-After 指定的秒数再发。quota_exceededaccount · 429本月的 1,000 次用完了,下月 1 日 UTC 00:00 重置。Retry-After 会告诉你还要等多少秒。translation_quota_exceededaccount · 429本月的翻译额度用完了,下月 1 日 UTC 00:00 重置。不翻译的字幕请求照常可用。capacity_exhaustedquota · 503试用期间所有人共用的当天总量用完了。稍后再试;Retry-After 会给出等待时间。这不是你的额度问题。invalid_tokenunauthorized · 401密钥缺失、写错或已撤销。检查请求头 Authorization: Bearer 和环境变量;不要把密钥贴给任何人或对话。
空结果或未知结果,不等于“没有字幕”。 只有明确的结论才说视频没有字幕。报告问题时带上 request_id。
第一次请求跑通了,接下来?
到控制台看本月用了多少次,管理你的密钥。