全新推出 BillionVerify:以 1% 的成本验证数十亿邮箱。 试用 BillionVerify

transcript.im

REST API

面向视频和音频的转录 API

transcript.im 把驱动产品的那条提取流水线以带版本的转录 API 开放出来。发送一个视频或音频 URL,就能拿回带时间戳的文本,格式为 JSON 或纯文本,平台由系统自动识别。已有字幕优先使用;视频没有字幕时,由 AI 转写音频,结果以异步方式返回。

  • 一个 url 既接受完整链接也接受短链接,并自动识别 YouTube、TikTok、Instagram、LinkedIn 和 Twitter/X;YouTube 还支持直接传视频 id,已知来源时也可以用 platform 加 externalId 指定。
  • 优先使用字幕;视频没有字幕时由 AI 转写人声,本地文件上传则一律走语音识别。
  • format=json 返回带时间戳的分段,format=text 返回可直接粘贴的纯文本。
  • 批量提取支持 URL 列表、播放列表和频道。
  • 批量导出支持 txt、csv、json、srt、vtt、zip;已保存的转录可下载为 txt、srt、vtt、json 或 md。
  • 已保存的转录存放在账户资料库中,YouTube 发现能力覆盖搜索、视频、频道、上传、播放列表和字幕。
  • 完整契约以 OpenAPI 文档形式公开。
转录 API:发送视频链接,返回带时间戳的 JSON 转录

transcript.im API 能做什么

transcript.im API 把公开的视频或音频链接转化成带时间戳的转录文本,你的产品可以读取、存储、搜索,或送入模型。你发送一个 URL;API 解析平台,查找创作者已有的字幕轨,返回每一行都带时间戳的文字。当视频完全没有字幕时,API 不会停在错误上——它会改用 AI 转写人声,让同一个请求照样产出文本。

这一个行为正是转录提取 API 的意义所在:你不再需要把下载器、字幕抓取器和语音转文字服务拼在一起。API 为每个链接挑一条能用的最省成本路径,让时间戳与真实讲话对齐,并回报它最终使用的语言。已经存在的转录立即返回;需要语音识别的视频会作为任务移交出去,长时间录音不会一直占着你的请求。
  • 一次请求,真实文本——解析一个链接,返回带时间戳的转录分段或纯文本。
  • 字幕优先,AI 其次——有创作者字幕就用,没有就转写音频。
  • ASR 默认异步——拿到 job id 后可以轮询长时间转写而不会阻塞。
  • 感知语言——请求语言优先级,并读回 API 实际解析出的语言。
  • 平台无关——调用方不需要知道视频托管在哪里。

一个转录 API,覆盖五大平台

视频转录 API:一个 API 覆盖五大平台,输出带时间戳的转录

YouTube

任何公开的 YouTube 视频、Shorts 或直播录像都能转录,优先使用创作者字幕,字幕缺失时用 AI 转写。YouTube 也是拥有完整发现能力的平台——搜索、视频、频道、上传、播放列表和字幕——可与转录本身一起使用。一个频道的积压内容或一个播放列表会变成一批带时间戳的转录,而单个链接则返回可搜索的易读文本。

TikTok

公开 TikTok 视频的转录,优先使用字幕,语音识别作为兜底。粘贴视频链接,即可把口播内容读成干净、带时间戳的文本,方便二次利用、翻译或引用。同一次调用既能处理短视频也能处理较长的上传,所以趋势、教程和出镜口播都会以文本形式返回。

Instagram

公开 Instagram Reels 和视频帖子的转录。Instagram 没有可读取的字幕轨,因此提取走异步语音识别:提交链接、轮询任务,准备好后取回文本。这样即使平台从未把讲话发布成文字,一个 Reel 也能被引用和搜索。

LinkedIn

公开 LinkedIn 视频帖子的转录,优先使用字幕,语音识别作为兜底。结果带时间戳返回,因此一场演讲、一段产品短片或一次会议录像都会变成可搜索、可引用、可复用的文本。你可以从网络研讨会录像里提取论点,或把创始人的动态变成一份可编辑的草稿。

Twitter/X

公开 X 视频帖子的转录。X 没有可读取的字幕轨,因此提取走异步语音识别:提交链接、轮询任务,取回可搜索的带时间戳文本。你可以准确引用一段视频,或在帖子被编辑或删除前存档其口播内容。

一次转录请求如何流转

一次调用就把链接或上传的文件从输入带到转录,API 会告诉你它走了哪条路径。

YouTube 转录 API:YouTube 链接从排队到转录完成的流程
  • 发送来源——提交 url,已知来源时传 platform 和 externalId,或以 multipart/form-data 把文件上传到同一个端点。
  • 命中字幕——当视频带有你列表中的某种语言字幕时,转录会直接随响应返回。
  • 处理语言未命中——当存在字幕但没有一条匹配你的列表时,请求会继续走 AI 转写并返回 202 和一个 job id;只有在调用方不允许使用语音识别时,才会返回带 availableLanguages 的 404。
  • 强制或回退到 ASR——显式的 asr 条目、完全没有字幕轨的视频,或上传的文件,都会启动 ASR 任务并返回 job id。
  • 轮询或订阅流——用 GET /v1/transcript/job/{id} 读取任务直到成功或失败,或订阅其 /events 流接收服务端推送的进度。任务查询即使任务失败也会返回 200,所以要根据 status 字段分支。
  • 读取结果——完成的转录带有解析出的语言、时长、带时间戳的分段,以及按需返回的元数据,如标题、作者和发布日期。
  • 安全重试——已经提取过的转录会直接从缓存返回,不再启动新任务,所以同一个来源可以再次请求。
  • 先探查——GET /v1/transcript/info 会解析来源并列出它能提供的语言,供你在决定提取前判断。
由于同一个端点既服务缓存命中,也服务新的提取,你的集成不需要按来源分支:它始终发送来源,并对收到的状态作出反应。字幕命中直接返回转录,语言未命中继续走 AI 转写并返回 202 和 job id,真正不存在的资源或不被允许的兜底则返回 404。文本准备好后,每条路径都返回同一种转录结构。

批量提取与导出

真实工作很少只处理一个视频,因此 API 接受 URL 列表、播放列表或频道形式的批量任务。每个批量都跟踪自己的统计——有多少条待处理、多少条成功、多少条失败——并按页返回条目,长频道不会以一整块巨大的负载到达。

  • 三种批量形态——POST /v1/batch 根据你发送的请求体接受 URL 列表、播放列表或频道。
  • 独立状态——失败的链接会被单独标记,绝不会丢弃批量中的其余条目;失败条目可以用 /retry 重试。
  • 分页条目——用 GET /v1/batch/{batchId} 读取批量,然后跟随返回的 page token 获取剩余条目。
  • 实时进度——每次轮询都返回更新后的计数,调用方可以展示长任务完成了多少。
  • 按你的格式导出——从 /export 把完成的批量下载为 txt、csv、json、srt、vtt 或 zip。
对字幕流水线来说,srt 和 vtt 导出可以直接放进编辑器或播放器。对归档来说,csv、json 和 zip 让整座录像库作为一个语料可供搜索。这些格式与单条转录的响应保持一致,所以能处理单条结果的调用方,已经知道如何读取批量。

账户资料库中已保存的转录

提取与存储是两回事:转录一旦被保存,就成为账户资料库的一部分,而资料库正是你之后读取、搜索、下载和删除它的地方,无需重新执行提取。

  • 列出已保存内容——GET /v1/library/transcripts 分页遍历账户的转录、批量记录和失败历史行,支持搜索、平台与语言筛选以及排序。
  • 读取单条——GET /v1/library/transcripts/{platform}/{externalId} 按平台与外部 id 返回已保存的转录,或按你指定的语言返回。
  • 下载——/download 路由把已保存的转录导出为 txt、srt、vtt、json 或 md。
  • 相关内容——/related 路由列出同一频道下其他已保存条目。
  • 删除——DELETE 把条目从资料库移除,不会动到别人的副本。
  • 限定账户的读取——资料库请求只返回该账户保存的内容,绝不启动新的提取,所以回看一条已保存的转录是读取,而不是又一个任务。

转录之外的 YouTube 发现能力

YouTube 是 API 还能回答转录周边问题的平台,使用与 YouTube Data API 相同的资源命名。

  • 搜索——GET /v1/youtube/search 按查询找视频、频道或播放列表,返回游标分页结果。
  • 视频——GET /v1/youtube/videos 返回视频详情,包括是否有可用字幕。
  • 频道——GET /v1/youtube/channels 按 id 或 @handle 解析频道。
  • 频道上传——GET /v1/youtube/channels/{channelId}/videos 遍历一个频道的上传。
  • 播放列表条目——GET /v1/youtube/playlists/{playlistId}/items 遍历一个播放列表。
  • 字幕——GET /v1/youtube/captions 返回视频的字幕轨元数据和字幕正文。它绝不启动语音识别任务:当它报告 requiresAsync 时,调用 POST /v1/transcript 来执行转写。
发现回答要转录什么,提取回答说了什么。把两者分开意味着你可以先搜索和枚举,再只把你选中的链接送进转录或批量请求。

为生产环境而设计

接口面故意做得很小,服务真正在意的部分都有文档可依,而不是靠猜。

  • 一个凭证——用 Bearer 令牌形式发送 API 密钥认证,或在脚本、服务器里用 X-API-Key。
  • 带作用域的密钥——只授予调用方需要的作用域,transcripts 和 batches 分别覆盖提取与批量工作。
  • 结构化错误——提取和校验失败返回带稳定 code 与可读 message 的错误对象;认证 (401) 和限流 (429) 响应使用更简单的扁平错误体。
  • 可执行的限制——被限流的请求返回 429 和 Retry-After,成功响应会带 X-RateLimit-* 头,让客户端能正确退避。
  • 公开的契约——完整的 OpenAPI 文档支撑这套 API,你可以生成客户端、模拟服务端,或用 schema 校验真实响应。
  • 面向智能体的兄弟入口——如果你的调用方是 AI 客户端而不是服务,同一个账户和工具也可以通过 transcript.im MCP 服务器访问。

相关工具

转录 API 常见问题

transcript.im API 是什么?

transcript.im API 是一个 REST 接口,把公开的视频或音频链接转化成带时间戳的转录文本,优先使用已有字幕,视频没有字幕时使用 AI 转写。

transcript.im API 支持哪些平台?

它会从你发送的链接识别平台,提取 YouTube、TikTok、Instagram、LinkedIn 和 Twitter/X 的转录。YouTube、TikTok 和 LinkedIn 优先使用字幕,以语音识别作为兜底;Instagram 和 X 没有字幕轨,会直接走语音识别。

视频没有字幕时会怎样?

当视频完全没有字幕轨时,API 会启动 ASR 任务并返回 job id;你轮询该任务直到转录准备好,所以请求不会因语音识别而阻塞。

可以转录本地的音频或视频文件吗?

可以。POST /v1/transcript 接受带 file 部分的 multipart/form-data 请求体,用它替代 URL。上传的文件会直接走语音识别,因此返回 202 任务——如果在等待预算内完成,则返回 200 结果。

transcript.im API 能在返回文本的同时带上时间戳吗?

可以。JSON 响应带有带时间戳的分段,文本响应可以保留每行的时间戳前缀,因此你可以回到某句话被说出的那一刻。

如何请求特定语言的转录?

发送一个逗号分隔的语言优先级列表,包含 asr 和 asr-<code> 条目。字幕命中会直接返回;当存在字幕但没有一条匹配列表时,请求会继续走 AI 转写并返回 202 任务,只有在不允许使用语音识别时,才会返回带可用语言的 404。

怎样知道异步转录已经准备好?

用同一个凭证轮询 GET /v1/transcript/job/{id},直到它报告成功或失败,或订阅 GET /v1/transcript/job/{id}/events 接收服务端推送的更新。任务查询在任务失败时也返回 200,所以请读取 status 和 error 字段,而不是 HTTP 状态码。

transcript.im API 支持批量提取吗?

支持。一个批量接受 URL 列表、播放列表或频道,跟踪每个条目的状态,并按页返回条目。

可以下载哪些导出格式?

完成的批量可导出为 txt、csv、json、srt、vtt 或 zip;单条已保存的转录可下载为 txt、srt、vtt、json 或 md。

已保存的转录放在哪里?

账户资料库就是已保存的转录和批量记录所在之处,位于 /v1/library 下。它提供列出、读取、下载、相关和删除路由,读取限定在账户范围内,绝不启动新的提取。

YouTube 字幕端点返回什么?

GET /v1/youtube/captions 返回视频的字幕轨元数据以及字幕正文。它绝不启动语音识别任务;当它报告 requiresAsync 时,调用 POST /v1/transcript 来执行转写。

transcript.im API 如何报告错误和限流?

提取和校验错误使用带 code 和 message 的对象;认证返回扁平的 401,限流返回扁平的 429,并带 Retry-After 和 X-RateLimit-* 头,让客户端能正确退避。

把转录加入你的产品

创建一个 API 密钥,发送一个视频链接或本地文件,然后以 JSON 或纯文本读回转录。