单次请求上传,不必实现分块逻辑
把文件放在名为file的multipart字段里,可同时传入language、diarize、source和webhook_url。单次上传文档给出了完整请求,也可用Webhook接收完成或失败通知。
服务器上已经有录音文件时,这种方式容易接入。发送实际文件内容,不要把本地路径塞进JSON;multipart的boundary交给HTTP客户端生成。
空文件或不支持的扩展名会在校验时出错,反复提交没有帮助。先检查输入,再决定是否重试。
文件大小和录音时长要分别检查。压缩录音可能不到95MB,却超过5小时;短视频也可能因为分辨率高而超出单次上传上限。按字节大小选上传方式,再单独检查时长。
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
-H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
-F [email protected] \
-F language=auto创建上传任务,拿到分块方案和Token
上传最大2GB的文件时,先提交文件名和大小。接口会返回分块方案,以及仅供这次上传使用的X-Upload-Token。完整流程见分块上传文档。
每块的序号、偏移量和大小都以接口返回为准。客户端按指定字节范围读取文件,最后一块可能更短,不要自行假设每块都一样大。
二进制PUT请求使用上传Token认证。Token有效期为1小时,只能用于这次上传,不能代替通用API密钥。
创建上传任务时使用固定的Idempotency-Key。Token过期后,带相同的key和参数重发创建请求,就能为原上传获取新Token。每次断线都新建任务,会留下不必要的记录,也更难核对进度。
curl -X POST "https://api.transcript1.com/v1/transcriptions" \
-H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
-H "Idempotency-Key: interview-2026-10-13" \
-H "Content-Type: application/json" \
-d '{"upload":{"filename":"interview.m4a","size":48210334,"mime_type":"audio/mp4"}}'补齐缺少的分块,再提交转录
带上传Token把每块PUT到指定地址,全部发送后再确认上传完成。transcript1会检查分块是否齐全,通过后才把转录加入队列。相关接口见上传接口说明。
断线后先调用GET /v1/transcriptions/:id/upload,把received_chunks与原方案对照,只补传缺少的块。重复发送会替换原块,请求体仍须符合计划中的大小。
分块请求返回401时,先检查Token是否过期,不必重新生成音视频文件。确认完成时若返回409 upload_incomplete,按提示补齐缺少的序号。
加入队列后,通过转录接口查询进度,或等待Webhook。界面要分开展示“文件上传进度”和“转录进度”,文件传完不等于文字已经生成。
curl -X PUT "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/chunks/0" \
-H "X-Upload-Token: t1u_..." \
-H "Content-Type: application/octet-stream" \
--data-binary @chunk-0.bin
curl -X POST "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/complete" \
-H "Authorization: Bearer $TRANSCRIPT1_API_KEY"