- 01
创建密钥
登录 belindoc.com,点右上角头像 → 开发者中心 → 新建密钥。密钥以 ft_ 开头,完整值只在创建成功那一次显示。
- 02
上传文件
先获取一个预签名上传地址,再用 PUT 把文件直传上去。地址 10 分钟内有效,返回的 objectKey 下一步要用。
bash
# 1. 获取预签名上传地址(10 分钟内有效)
curl -X POST https://belindoc.com/api/external/translate/batchPresignedUploadUrl \
-H "X-Api-Key: $BELINDOC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileNameList": ["contract.pdf"]}'
# → data[0].persignedUploadUrl / data[0].objectKey
# 2. 用 PUT 把文件直传到该地址
curl -X PUT "<persignedUploadUrl>" --upload-file contract.pdf
- 03
提交翻译
fileList、sourceLanguage、targetLanguage、model 必填。源语言传 AnyLanguage 即自动识别;模型名不要写死,以 getModelList 返回的为准。
bash
curl -X POST https://belindoc.com/api/external/translate/batchSubmitTranslateTask \
-H "X-Api-Key: $BELINDOC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"fileList": [{ "fileName": "contract.pdf", "fileObjectKey": "<objectKey>" }],
"sourceLanguage": "AnyLanguage",
"targetLanguage": "zh-CN",
"model": "Gemini-2.5-Flash"
}'
# → { "code": "200", "data": { "batchNo": "...", "fileList": [ ... ] } }
- 04
轮询并下载
按 batchNo 轮询到 status 为 3,再取下载地址。该接口返回的是 SSE 流,链接在 [DONE] 事件里。
bash
# 轮询任务:status = 3 表示译文已就绪
curl -X POST https://belindoc.com/api/external/translate/searchTranslateFileByBatchNo \
-H "X-Api-Key: $BELINDOC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"batchNo": "<batchNo>"}'
# 取译文下载地址:SSE 响应,下载链接在 [DONE] 事件里
curl -N -X POST https://belindoc.com/api/external/translate/getTranslateS3DownloadUrl \
-H "X-Api-Key: $BELINDOC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"translateOrderNo": "<translateOrderNo>", "urlType": 2}'
# event:[DONE]
# data:{"url":"https://..."}
http
POST /api/external/translate/getModelList HTTP/1.1
Host: belindoc.com
Content-Type: application/json
X-Api-Key: ft_xxxxxxxxxxxxxxxxxxxxxxxx
language: zh
{}
json
{
"code": "200",
"msg": null,
"requestId": "8f1c…",
"data": { }
}
- X-Api-Key 请求头
- 每个请求都要带上密钥。密钥缺失、被禁用、已过期或调用 IP 不在白名单内,都会在进入业务逻辑之前被挡下。
- language 请求头
- 可选,决定响应里 msg 的语种,不传默认 en。取值为站点支持的 9 个语种:en、zh、zh-Hant、ja、ko、fr、ru、de、ar。
- 密钥只作用于个人账号
- 密钥永远解析成创建它的那个个人账号。文件走平台存储,任务扣的是该账号自己的额度——组织的私有空间不通过 API 访问。
- 统一响应结构
- 所有接口都用同一层包装。code 为 200 表示成功,其余都是业务错误,msg 里是对应语种的提示文案。
- 不需要 JWT,也不需要签名
- 网页端那套 token 与签名过滤器对 /external/ 全部放行。密钥是唯一凭证,请当成密码看待,只放在服务端。
- status:0 待处理 · 1 解析中 · 2 翻译中 · 3 已完成 · 4 失败 · 5 已取消
- urlType:1 原文件 · 2 译文 · 3 横向对照 · 4 纵向对照 · -1 EPUB 预览
01
获取上传地址
POST/external/translate/batchPresignedUploadUrl
批量换取文件的预签名上传地址。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| fileNameList | array[string] | 必填 | 要获取上传地址的文件名 |
| 参数名 | 类型 | 说明 |
|---|
| persignedUploadUrl | string | 预签名 PUT 地址,10 分钟内有效 |
| objectKey | string | 提交翻译时要回传的存储键 |
| fileName | string | 原始文件名 |
| storageType | number | 该文件所在的存储类型 |
例子
请求
{
"fileNameList": ["contract.pdf"]
}
响应
{
"code": "200",
"data": [
{
"persignedUploadUrl": "https://s3.../contract.pdf?X-Amz-Signature=…",
"objectKey": "translate/10086/2026/contract.pdf",
"fileName": "contract.pdf",
"storageType": 1
}
]
}
02
识别扫描件
POST/external/translate/isOcr
提交前判断上传的文件是不是扫描件,只在真的需要时才开 OCR。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| fileObjectKey | string | 必填 | 预签名接口返回的 objectKey |
| storageType | number | 必填 | 该文件所在的存储类型 |
| 参数名 | 类型 | 说明 |
|---|
| isOcr | number | 1 表示该文件是扫描件 |
| isDoubleDeck | number | 1 表示该扫描件已带文本层 |
例子
请求
{
"fileObjectKey": "translate/10086/2026/contract.pdf",
"storageType": 1
}
响应
{
"code": "200",
"data": { "isOcr": 1, "isDoubleDeck": 0 }
}
03
提交翻译任务
POST/external/translate/batchSubmitTranslateTask
提交批量翻译任务,返回 batchNo 与每个文件的订单号。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| fileList | array | 必填 | 待翻译文件列表 |
| fileName | string | 必填 | 原始文件名 |
| fileObjectKey | string | 必填 | 预签名接口返回的 objectKey |
| isOcrFile | number | — | 1 表示该文件按扫描件处理,取自 isOcr 接口 |
| sourceLanguage | string | 必填 | 源语言码,AnyLanguage 为自动识别 |
| targetLanguage | string | 必填 | 目标语言码 |
| model | string | 必填 | 模型版本号,取自 getModelList |
| isOcr | number | — | 1 走 OCR,默认 0 |
| isMath | number | — | 1 保留公式排版,默认 0 |
| translateStyle | number | — | 翻译风格预设 |
| terminologyCollectionId | string | — | 要应用的术语库 ID;术语库目前只能在网页端创建和管理,接口侧暂不提供 |
| 参数名 | 类型 | 说明 |
|---|
| batchNo | string | 提交时返回的批次号 |
| fileList | array | 待翻译文件列表 |
| balanceHint | number | 1 表示剩余额度已不多 |
例子
请求
{
"fileList": [
{ "fileName": "contract.pdf", "fileObjectKey": "translate/10086/2026/contract.pdf" }
],
"sourceLanguage": "AnyLanguage",
"targetLanguage": "zh-CN",
"model": "Gemini-2.5-Flash",
"isOcr": 0,
"terminologyCollectionId": "66f1c2a4b8d3e5f7a9c1b2d3"
}
响应
{
"code": "200",
"data": {
"batchNo": "B20260828173001",
"fileList": [
{ "fileName": "contract.pdf", "fileObjectKey": "translate/10086/2026/contract.pdf" }
],
"balanceHint": 0
}
}
04
按批次号查任务
POST/external/translate/searchTranslateFileByBatchNo
按批次号查该批全部任务,轮询进度用这个。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| batchNo | string | 必填 | 提交时返回的批次号 |
| 参数名 | 类型 | 说明 |
|---|
| translateOrderNo | string | 任务订单号 |
| batchNo | string | 提交时返回的批次号 |
| sourceFileName | string | 原始文件名 |
| status | number | 任务状态,见上方图例 |
| textNumber | number | 本任务计费字符数 |
| targetFileUrl | string | 译文文件地址 |
| targetFileUrl2 | string | 国内兜底地址 |
| xComparisonS3Url | string | 横向对照文件 |
| yComparisonS3Url | string | 纵向对照文件 |
| freeTranslateQuota | number | 本次消耗的免费页数 |
| walletTranslateQuota | number | 本次消耗的付费页数 |
| createTime | number | 创建时间,毫秒时间戳 |
| startTime | number | 开始时间,毫秒时间戳 |
| endTime | number | 完成时间,毫秒时间戳 |
| errorCode | string | status 为 4 时的失败码 |
例子
请求
{
"batchNo": "B20260828173001"
}
响应
{
"code": "200",
"data": [
{
"translateOrderNo": "T20260828173002",
"batchNo": "B20260828173001",
"sourceFileName": "contract.pdf",
"status": 3,
"textNumber": 4820,
"targetFileUrl": "https://s3.../contract_zh-CN.pdf?X-Amz-Signature=…"
}
]
}
05
分页查翻译记录
POST/external/translate/searchTranslateFilePage
分页查询本账号的翻译记录。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| pageNum | number | 必填 | 页码,从 1 开始 |
| pageSize | number | 必填 | 每页条数 |
| status | number | — | 任务状态,见上方图例 |
| fileType | string | — | 按文件类型筛选,如 PDF |
| sourceFileName | string | — | 按文件名筛选 |
| 参数名 | 类型 | 说明 |
|---|
| records | array | 当前页数据 |
| total | number | 总条数 |
| current | number | 当前页码 |
| pages | number | 总页数 |
06
查任务详情
POST/external/translate/getTranslateFileDetail
按订单号查单个任务详情。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| translateOrderNo | string | 必填 | 任务订单号 |
| 参数名 | 类型 | 说明 |
|---|
| translateOrderNo | string | 任务订单号 |
| batchNo | string | 提交时返回的批次号 |
| sourceFileName | string | 原始文件名 |
| status | number | 任务状态,见上方图例 |
| textNumber | number | 本任务计费字符数 |
| targetFileUrl | string | 译文文件地址 |
| targetFileUrl2 | string | 国内兜底地址 |
| xComparisonS3Url | string | 横向对照文件 |
| yComparisonS3Url | string | 纵向对照文件 |
| freeTranslateQuota | number | 本次消耗的免费页数 |
| walletTranslateQuota | number | 本次消耗的付费页数 |
| createTime | number | 创建时间,毫秒时间戳 |
| startTime | number | 开始时间,毫秒时间戳 |
| endTime | number | 完成时间,毫秒时间戳 |
| errorCode | string | status 为 4 时的失败码 |
07
获取下载地址
POST/external/translate/getTranslateS3DownloadUrl
获取原文件、译文或对照文件的下载地址(SSE 响应)。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| translateOrderNo | string | 必填 | 任务订单号 |
| urlType | number | 必填 | 取哪一份文件,见上方图例 |
| isWatermark | number | — | 0 表示去水印,需权益支持 |
| 参数名 | 类型 | 说明 |
|---|
| url | string | 下载地址,随 [DONE] 事件下发 |
| url2 | string | 国内兜底地址,有则下发 |
例子
请求
{
"translateOrderNo": "T20260828173002",
"urlType": 2,
"isWatermark": 0
}
响应
event:[PROCESS]
data:
event:[DONE]
data:{"translateOrderNo":"T20260828173002","url":"https://s3.../contract_zh-CN.pdf?X-Amz-Signature=…"}
08
查询可用模型
POST/external/translate/getModelList
查询 model 可选值及各自的额度系数。
| 参数名 | 类型 | 说明 |
|---|
| version | string | 提交时 model 要传的值 |
| modelType | number | 内部模型族 |
| vipType | number | 可用该模型的档位 |
| coefficient | number | 该模型的额度系数 |
| groupType | number | 所属分组 |
09
查询支持语种
POST/external/translate/getLanguageEnum
查询 79 个支持的语言代码及其各语种译名。
| 参数名 | 类型 | 说明 |
|---|
| {locale} | object | 语种 → 语言码 → 该语种下的译名 |
例子
响应
{
"code": "200",
"data": {
"en": {
"AnyLanguage": "Any language",
"zh-CN": "Simplified Chinese",
"…": "…"
},
"zh": {
"AnyLanguage": "任意语言",
"zh-CN": "简体中文",
"…": "…"
},
"…": {}
}
}
- status:0 未开始 · 1 进行中 · 2 成功 · 3 失败 · 4 已取消
- step:1 语音识别 · 2 字幕翻译 · 3 语音生成
- stepStatus:0 未开始 · 1 进行中 · 2 完成 · 3 失败
- subtitleType:0 不嵌字幕 · 1 译文字幕 · 2 原文字幕 · 3 双字幕
01
获取上传地址
POST/external/videoTranslate/batchPresignedUploadUrl
批量换取视频的预签名上传地址。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| fileNameList | array[string] | 必填 | 要获取上传地址的文件名 |
| 参数名 | 类型 | 说明 |
|---|
| persignedUploadUrl | string | 预签名 PUT 地址,10 分钟内有效 |
| objectKey | string | 提交翻译时要回传的存储键 |
| fileName | string | 原始文件名 |
02
提交视频翻译
POST/external/videoTranslate/submitVideoTranslate
提交视频翻译任务,videoTaskParam 里带音色、字幕与字体设置。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| sourceLanguage | string | 必填 | 源语言码,AnyLanguage 为自动识别 |
| targetLanguage | string | 必填 | 目标语言码 |
| sourceFileObjectKey | string | 必填 | 已上传视频的 objectKey |
| videoFileName | string | 必填 | 原始视频文件名 |
| videoTaskParam | object | 必填 | 音色、字幕与字体设置 |
| voiceRole | string | — | 配音音色,clone 为复刻原声 |
| subtitleType | number | — | 嵌入哪种字幕,见上方图例 |
videoTaskParam 的其余字段(25 项,均可省略)
| 参数名 | 类型 | 说明 |
|---|
| recognType | number | 语音识别引擎,默认 12,保持默认即可 |
| modelName | string | 识别模型,默认 tiny |
| splitType | string | 切分方式,默认 all |
| isCuda | boolean | 是否启用 GPU 加速,默认 false |
| translateType | number | 字幕翻译引擎,默认 14,保持默认即可 |
| ttsType | number | 语音合成引擎,默认 15,保持默认即可 |
| voiceRate | string | 配音语速,如 +10%,默认 +0% |
| volume | string | 配音音量,如 +10%,默认 +0% |
| pitch | string | 配音音调,如 +5Hz,默认 +0Hz |
| voiceAutorate | boolean | 配音时长自动对齐原声,默认 true |
| videoAutorate | boolean | 画面时长自动对齐配音,默认 true |
| appendVideo | boolean | 时长不足时循环补足画面,默认 true |
| isSeparate | boolean | 单独输出人声与背景音,默认 false |
| onlyVideo | boolean | 只产出视频,不产出字幕文件,默认 false |
| fontsize | number | 字幕字号,默认 14 |
| fontname | string | 字幕字体名,不传用服务端默认 |
| fontcolor | string | 字幕文字颜色,#RRGGBB 或 ASS 色值 |
| fontbold | boolean | 字幕是否加粗 |
| subtitlePosY | number | 字幕底边距画面底边的百分比,0-90,不传为底部 |
| subtitlePosX | number | 字幕水平中心距画面左边的百分比,5-95,50 为居中 |
| fontbordercolor | string | 字幕描边颜色,#RRGGBB / #RRGGBBAA / ASS 色值 |
| backgroundcolor | string | 字幕背景框颜色,#RRGGBB / #RRGGBBAA / ASS 色值 |
| outline | number | 描边宽度 0-10,0 为关闭描边 |
| shadow | number | 阴影大小 0-10,0 为关闭阴影 |
| borderStyle | number | 边框样式:1 普通描边/阴影,3 逐行矩形背景框 |
| 参数名 | 类型 | 说明 |
|---|
| videoTranslateOrderNo | string | 视频任务订单号 |
| videoFileName | string | 原始视频文件名 |
| videoDuration | number | 视频时长,单位秒 |
| status | number | 任务状态,见上方图例 |
| step | number | 当前处理环节,见上方图例 |
| stepStatus | number | 当前环节的状态,见上方图例 |
| targetFileUrl | string | 译文文件地址 |
| sourceSubtitlesUrl | string | 原文字幕文件地址 |
| targetSubtitlesUrl | string | 译文字幕文件地址 |
| freeTranslateQuota | number | 本次消耗的免费页数 |
| walletTranslateQuota | number | 本次消耗的付费页数 |
| errorMessage | string | 任务失败时的原因 |
例子
请求
{
"sourceLanguage": "ja",
"targetLanguage": "zh-CN",
"sourceFileObjectKey": "video/10086/2026/lecture.mp4",
"videoFileName": "lecture.mp4",
"videoTaskParam": { "voiceRole": "clone", "subtitleType": 1 }
}
03
试算视频额度
POST/external/videoTranslate/videoTranslateQuotaCalculate
提交前按时长、音色、字幕类型试算额度消耗。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| videoDuration | number | 必填 | 视频时长,单位秒 |
| voiceRole | string | 必填 | 配音音色,clone 为复刻原声 |
| subtitleType | number | 必填 | 嵌入哪种字幕,见上方图例 |
| 参数名 | 类型 | 说明 |
|---|
| translateQuota | number | 本次总计消耗额度 |
| videoDurationTranslateQuota | number | 按时长折算的额度 |
| thirtySecondQuota | number | 每 30 秒的额度 |
| quotaCoefficient | number | 在基准之上的系数 |
04
分页查视频记录
POST/external/videoTranslate/searchVideoTranslatePage
分页查询本账号的视频翻译记录。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| pageNum | number | 必填 | 页码,从 1 开始 |
| pageSize | number | 必填 | 每页条数 |
| status | number | — | 任务状态,见上方图例 |
| 参数名 | 类型 | 说明 |
|---|
| records | array | 当前页数据 |
| total | number | 总条数 |
| current | number | 当前页码 |
| pages | number | 总页数 |
05
查任务详情
POST/external/videoTranslate/getVideoTranslateDetail
查询单个视频任务,含进度与产物地址。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| videoTranslateOrderNo | string | 必填 | 视频任务订单号 |
| 参数名 | 类型 | 说明 |
|---|
| videoTranslateOrderNo | string | 视频任务订单号 |
| videoFileName | string | 原始视频文件名 |
| videoDuration | number | 视频时长,单位秒 |
| status | number | 任务状态,见上方图例 |
| step | number | 当前处理环节,见上方图例 |
| stepStatus | number | 当前环节的状态,见上方图例 |
| targetFileUrl | string | 译文文件地址 |
| sourceSubtitlesUrl | string | 原文字幕文件地址 |
| targetSubtitlesUrl | string | 译文字幕文件地址 |
| freeTranslateQuota | number | 本次消耗的免费页数 |
| walletTranslateQuota | number | 本次消耗的付费页数 |
| errorMessage | string | 任务失败时的原因 |
06
取消视频任务
POST/external/videoTranslate/cancelVideoTranslateHistory
取消尚未完成的视频任务。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| videoTranslateOrderNo | string | 必填 | 视频任务订单号 |
07
获取字幕文件
POST/external/videoTranslate/getVideoTranslateSubtitles
取回原文与译文字幕,供外部编辑。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| videoTranslateOrderNo | string | 必填 | 视频任务订单号 |
| 参数名 | 类型 | 说明 |
|---|
| sourceSubtitlesUrl | string | 原文字幕文件地址 |
| targetSubtitlesUrl | string | 译文字幕文件地址 |
08
提交字幕改写
POST/external/videoTranslate/submitVideoRewrite
回传编辑后的字幕,按新字幕重新生成视频。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| videoTranslateOrderNo | string | 必填 | 视频任务订单号 |
| sourceSubtitlesTxt | string | 必填 | 编辑后的原文字幕 |
| targetSubtitlesTxt | string | 必填 | 编辑后的译文字幕 |
| videoTaskParam | object | — | 音色、字幕与字体设置 |
videoTaskParam 的其余字段(25 项,均可省略)
| 参数名 | 类型 | 说明 |
|---|
| recognType | number | 语音识别引擎,默认 12,保持默认即可 |
| modelName | string | 识别模型,默认 tiny |
| splitType | string | 切分方式,默认 all |
| isCuda | boolean | 是否启用 GPU 加速,默认 false |
| translateType | number | 字幕翻译引擎,默认 14,保持默认即可 |
| ttsType | number | 语音合成引擎,默认 15,保持默认即可 |
| voiceRate | string | 配音语速,如 +10%,默认 +0% |
| volume | string | 配音音量,如 +10%,默认 +0% |
| pitch | string | 配音音调,如 +5Hz,默认 +0Hz |
| voiceAutorate | boolean | 配音时长自动对齐原声,默认 true |
| videoAutorate | boolean | 画面时长自动对齐配音,默认 true |
| appendVideo | boolean | 时长不足时循环补足画面,默认 true |
| isSeparate | boolean | 单独输出人声与背景音,默认 false |
| onlyVideo | boolean | 只产出视频,不产出字幕文件,默认 false |
| fontsize | number | 字幕字号,默认 14 |
| fontname | string | 字幕字体名,不传用服务端默认 |
| fontcolor | string | 字幕文字颜色,#RRGGBB 或 ASS 色值 |
| fontbold | boolean | 字幕是否加粗 |
| subtitlePosY | number | 字幕底边距画面底边的百分比,0-90,不传为底部 |
| subtitlePosX | number | 字幕水平中心距画面左边的百分比,5-95,50 为居中 |
| fontbordercolor | string | 字幕描边颜色,#RRGGBB / #RRGGBBAA / ASS 色值 |
| backgroundcolor | string | 字幕背景框颜色,#RRGGBB / #RRGGBBAA / ASS 色值 |
| outline | number | 描边宽度 0-10,0 为关闭描边 |
| shadow | number | 阴影大小 0-10,0 为关闭阴影 |
| borderStyle | number | 边框样式:1 普通描边/阴影,3 逐行矩形背景框 |
| 参数名 | 类型 | 说明 |
|---|
| videoTranslateRewriteOrderNo | string | 字幕改写任务订单号 |
| status | number | 任务状态,见上方图例 |
| targetFileUrl | string | 译文文件地址 |
09
查字幕改写进度
POST/external/videoTranslate/getVideoTranslateRewriteDetail
查询字幕改写任务的进度。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| videoTranslateRewriteOrderNo | string | 必填 | 字幕改写任务订单号 |
| 参数名 | 类型 | 说明 |
|---|
| status | number | 任务状态,见上方图例 |
| targetFileUrl | string | 译文文件地址 |
| targetSubtitlesUrl | string | 译文字幕文件地址 |
| errorMessage | string | 任务失败时的原因 |
10
试算字幕改写额度
POST/external/videoTranslate/videoTranslateRewriteQuotaCalculate
试算字幕改写重新生成视频的额度消耗。
| 参数名 | 类型 | 必填 | 说明 |
|---|
| videoTranslateRewriteOrderNo | string | 必填 | 字幕改写任务订单号 |
| 参数名 | 类型 | 说明 |
|---|
| translateQuota | number | 本次总计消耗额度 |
| quotaCoefficient | number | 在基准之上的系数 |
- subscriptionStatus:1 待处理 · 2 订阅中 · 3 已退订 · 4 已取消
- interval:1 日 · 2 周 · 3 月 · 4 年
01
查询剩余额度
POST/external/user/getMyWalletInfo
查询该密钥所属账号的钱包:页数额度、OCR 额度、去水印次数与邀请奖励余额。
| 参数名 | 类型 | 说明 |
|---|
| userId | number | 该密钥所属的账号 ID |
| translateQuota | number | 剩余可用页数额度 |
| advancedTranslateQuota | number | 剩余高级模型额度 |
| ocrTranslateQuota | number | 剩余 OCR 额度 |
| accelerationCardNumber | number | 剩余加速卡数量 |
| totalFreeTranslateQuota | number | 本周期发放的免费页数 |
| useFreeTranslateQuota | number | 本周期已用的免费页数 |
| totalFreeOcrTranslateQuota | number | 本周期发放的免费 OCR 页数 |
| useFreeOcrTranslateQuota | number | 本周期已用的免费 OCR 页数 |
| freeWatermarkQuota | number | 剩余去水印次数 |
| daysFreeWatermarkQuota | number | 每日发放的去水印次数 |
| usedDaysFreeWatermarkQuota | number | 今日已用的去水印次数 |
| rewardBalance | number | 邀请奖励余额 |
| rewardTotal | number | 累计获得的邀请奖励 |
例子
响应
{
"code": "200",
"data": {
"userId": 10086,
"translateQuota": 12000,
"advancedTranslateQuota": 0,
"ocrTranslateQuota": 800,
"totalFreeTranslateQuota": 500,
"useFreeTranslateQuota": 132
}
}
02
查询当前套餐
POST/external/user/getMySubscriptionInfo
查询该密钥所属账号的套餐:档位、当前周期,以及它给到的并发数、文件大小与视频时长上限。
| 参数名 | 类型 | 说明 |
|---|
| vipName | string | 套餐名称 |
| vipType | number | 套餐档位 |
| subscriptionStatus | number | 订阅状态,见上方图例 |
| interval | number | 订阅周期,见上方图例 |
| startTime | number | 本期开始时间,毫秒时间戳 |
| endTime | number | 本期结束时间,毫秒时间戳 |
| translateQuota | number | 每期发放的页数额度 |
| advancedTranslateQuota | number | 每期发放的高级模型额度 |
| freeTranslateQuota | number | 每个周期发放的免费页数 |
| freeTranslateQuotaInterval | number | 免费页数的重置周期:1 日 · 2 周 · 3 月 |
| concurrenceTask | number | 文档任务的并发上限 |
| uploadFileSize | number | 单个文件大小上限,单位 MB |
| videoDurationLimit | number | 视频时长上限,单位分钟 |
| videoTranslateConcurrency | number | 视频任务的并发上限 |
| videoFileSize | number | 视频文件大小上限,单位 MB |
| 错误码 | 含义 | 处理建议 |
|---|
| 30306 | 无效的 API 密钥 | 检查密钥是否完整复制(含 ft_ 前缀)。已删除的密钥同样返回这个码。 |
| 30307 | 密钥已被禁用 | 在开发者中心里重新启用,或换一把密钥。 |
| 30308 | 密钥已过期 | 把过期时间往后调,或新建一把密钥。 |
| 30309 | 调用 IP 不在白名单内 | 把服务器的出口 IP 加进该密钥的白名单,或直接清空白名单。 |
| 30312 | 密钥被管理员封禁 | 联系客服处理,这一条在开发者中心里解不开。 |
翻译本身的报错——额度不足、文件不支持、重复提交等——有各自的错误码,且 msg 会按 language 头返回对应语种。分支判断请认 code,别认 msg。
- 同一份额度,不单独计费
- 接口调用扣的是与网页端同一份页数、视频额度,模型系数也相同,没有单独的接口价。
- 水印口径一致
- 免费额度下 PDF 译文带水印,与浏览器里拿到的完全一样,走接口不会去掉。
- 只有提交类接口计次
- 密钥的调用次数只在 batchSubmitTranslateTask、submitVideoTranslate、submitVideoRewrite 上累加,查询类接口随便轮询不计次。
- 同一账号串行提交
- 提交按账号加锁。上一次提交还在受理时再发一次,会返回重复任务的错误码——稍等重试即可,不要并行猛发。
- OCR 默认关闭
- 只有扫描件才需要传 isOcr。OCR 会在页数额度之外再扣一份 OCR 子额度,文本版 PDF 开着它等于双份消耗——拿不准就先调 isOcr 接口验一下。
不想自己接 HTTP?
同一套能力也以 MCP 工具的形式开放,AI 助手可以直接调用,一行 HTTP 代码都不用写。