通过 API 实现端到端本地化:字符串、电子邮件及文档
只需五次调用,即可从 API 密钥配置直达翻译输出。随后是更完善的闭环支持:支持服务端增量更新的字符串目录、通过 Webhook 处理的邮件模板、DOCX 文档往返处理、术语表与翻译记忆库,以及支持多种格式的结果输出。

本页内容
编辑器能做的,脚本都能实现:导入、结合您的术语表和翻译记忆库进行多语言翻译、审核以及导出。本指南将引导您从配置密钥开始,完成翻译输出,并深入了解流程中的各个环节。交互式参考文档和 OpenAPI JSON 提供了详尽的接口规范;transept.ai/developers 是本指南的单页简版。在开始第一次调用前,请注意一个命名上的小细节:在所有面向用户的界面中,计费单位均为 words,但在 API 响应字段中仍保留了历史名称 credits(如 estimatedCredits、spendable)。二者数量一致。
获取密钥
在应用中前往 Settings → Developer;复制并保存密钥(该密钥仅显示一次)。发送请求时,请将其置于 Authorization: Bearer tsk_live_… 请求头中,切勿在 URL 中传递。
| 密钥 | 创建者 | 计费对象 | 适用场景 |
|---|---|---|---|
| 个人密钥 | 您,位于 Settings → Developer | 您的字数余额 | 脚本、CI 以及您自有的自动化流程 |
| 团队密钥 | 团队所有者,在“团队设置”中 | 团队字数池 | 不受人员离职影响的共享流水线 |
密钥设有权限范围:可授予完全访问权限,或针对不同模块(文档、运行任务、术语库、风格指南、翻译记忆库、Webhook、项目)分别设置读/写权限。若调用超出密钥权限范围,将返回 403 错误并说明缺失的权限。密钥无法用于创建新密钥;密钥管理仅限在应用内进行。
五次调用实现闭环
验证密钥,创建文档,获取任务估价,启动运行,读取结果。
export KEY="tsk_live_…"
BASE="https://app.transept.ai/api/public/v1"
# 1: who am I, what can this key do, what's the balance?
curl -s $BASE/me -H "Authorization: Bearer $KEY"# 2: a document plus its target-language fan-out, in one call
curl -s -X POST $BASE/documents \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"title": "Welcome email", "content": "# Welcome\n\nStart your free trial.",
"content_type": "markdown", "source_language": "en",
"target_language": "de", "target_languages": ["fr", "uk"]}'
# → { document_id, language_group: [ {id, target_language}, … ] }# 3: price it (free, no side effects), then run it across every language
curl -s $BASE/workflow-templates -H "Authorization: Bearer $KEY" # discover ids
curl -s -X POST $BASE/group-runs/estimate \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"document_id": "<master>", "template_id": "end_to_end", "target_languages": "all"}'
# → { lanes: [ {language, estimatedCredits, minCredits} ], totals: {sufficient} }
curl -s -X POST $BASE/group-runs \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: welcome-2026-08-05" \
-d '{"document_id": "<master>", "template_id": "end_to_end", "target_languages": "all"}'
# → { id: <group_run_id>, runs: [ {job_id, language, block_count} ] }# 4: wait by polling, or get pushed a signed event instead
curl -s $BASE/group-runs/<group_run_id> -H "Authorization: Bearer $KEY"
# → { status, runs: [ {language, status, progress, gate} ] }# 5: read the results in the format your pipeline wants
curl -s "$BASE/documents/<version-id>/content?format=markdown" \
-H "Authorization: Bearer $KEY"从第一天起就应养成的三个习惯:优先估价(免费;预估范围包含下限与上限,且上限最终将回落至实际支出)、在创建任务的 POST 请求中发送 **Idempotency-Key**(重试将重现首次结果,而非重复计费),以及注册 Webhook(POST /webhooks {url, events: ["group_run.completed"]})而非轮询。消息投递均经过 HMAC 签名,支持重试并提供投递日志。
三种输入形式
| 现有内容…… | 发送方式 | 端点 |
|---|---|---|
| 长文本:邮件正文、文章、页面 | 内联 Markdown / HTML / 文本 | POST /documents 或有效负载 Webhook |
| 文件:DOCX、HTML、CSV、PO、XLIFF | Multipart 上传 | POST /documents/upload |
| 带键的 UI 文本或游戏字符串 | 字符串目录 (.tstrings.json) | POST /documents/import-strings |
正文与邮件
调用 POST /documents 并指定 content_type: "html",即可在翻译过程中保留格式、链接和模板占位符;使用 format=html 则能原样获取翻译后的邮件。你甚至可以省去手动请求:只需将工作流触发器设为 “以请求体作为内容”,并将您的 ESP、Zapier/n8n 或 CI 指向该触发器 URL:
# the trigger URL (with its secret) comes from the workflow's trigger card;
# the secret IS the auth, so no Authorization header
curl -s -X POST $BASE/hooks/<trigger-secret> \
-H "Content-Type: application/json" \
-d '{"content": "<h1>Welcome!</h1><p>Your trial starts today.</p>",
"content_type": "html",
"title": "Trial welcome",
"external_id": "welcome-v4"}'
# → 202 { run id, document_id, created }
# raw bodies work too: POST the markdown/HTML itself with its Content-Type
curl -s -X POST $BASE/hooks/<trigger-secret> \
-H "Content-Type: text/markdown" \
--data-binary $'# Welcome\n\nStart your free trial.'触发器决定了每次投递是创建新文档,还是更新某份固定文档(更新操作会重新对齐内容,因此只有发生变化的区块才会重新翻译)。24 小时内的重复投递将基于 external_id 或内容哈希进行去重。请参阅 Webhook 触发器。
文件
通过 POST /documents/upload (multipart) 上传文件,并提供 source_language、target_language、可选的 target_languages[] 及 project_id。DOCX 支持无损往返:导出时会将译文回填至原始文件,确保样式与布局完好如初。CSV、PO 和 XLIFF 则作为键值单元导入,并按原格式导出。格式详情及列映射请参阅:字符串文件。
字符串目录
每个字符串都是一个单元,拥有固定的 id、source 以及可选的 context、max_length 和 placeholders:
curl -s -X POST $BASE/documents/import-strings \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"document": {
"format": "transept-strings", "version": 1, "source_locale": "en",
"target_locales": ["de", "fr", "uk"],
"metadata": {"name": "App UI"},
"units": [
{"id": "app.save", "source": "Save", "context": "Toolbar button"},
{"id": "app.greeting", "source": "Welcome, {name}", "context": "Dashboard header"}
]}}'
# → { processing_job_id }; poll GET /document-jobs/{id}Context 信息会作为翻译指南传递给模型,max_length 通过“缩短并重试”机制强制执行,占位符受到保护,复数形式则按语言规则展开。文件中自带的译文将免费预置为有效译文,并填充至翻译记忆库。若未指定目标语言,调用将失败并返回 no_target_languages,以免导入一个无法翻译到任何语言的文档。完整流程请参阅通过 API 本地化字符串目录。
一个邮件模板,三种语言
以邮件为例。Liquid 标签在翻译过程中会保持原样:
# the template body goes in as HTML; three target languages fan out
curl -s -X POST $BASE/documents \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"title": "Trial welcome", "content_type": "html", "source_language": "en",
"target_languages": ["de", "fr", "uk"],
"content": "<h1>Welcome, {{ first_name | default:\"friend\" }}!</h1><p>Your trial starts today.</p>"}'{{ first_name | … }} 在模型接收文本前会被屏蔽,并在之后原样恢复。但有一个例外:回退值 friend 是面向读者的文案,因此它会被翻译,而其周围的标签则保持不变。按照快速入门中的步骤运行任务组,然后读取各语言版本的返回结果:
curl -s "$BASE/documents/<de-version-id>/content?format=html" \
-H "Authorization: Bearer $KEY"
# → the same HTML with German copy, Liquid intact; paste it into the ESP's de variant零接触方案:有效负载 Webhook 触发器直接从 ESP 获取模板,工作流在内容到达后立即运行,并通过 group_run.completed Webhook 传回翻译后的 HTML。针对特定平台的细节(如 Braze 标签、Mailchimp 条件语句):请参阅 ESP 邮件模板和邮件本地化指南。
术语库、风格指南与翻译记忆库
创建术语库,并在同一次调用中预置术语:
curl -s -X POST $BASE/glossaries \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"name": "Product terms", "source_language": "en",
"terms": [{"source_term": "Transept", "target_term": "Transept",
"do_not_translate": true}]}'扩充现有术语库(使用 GET /glossaries 列出您的密钥有权访问的内容):
curl -s -X POST $BASE/glossaries/<id>/terms/bulk \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"terms": [
{"source_term": "workspace", "target_term": "Arbeitsbereich"},
{"source_term": "run", "target_term": "Lauf", "notes": "the noun: a workflow execution"}
]}'或者从您信任的文档中生成:POST /glossaries/{id}/auto-build 和 POST /styleguides/generate 均配有免费的 …/estimate 预估接口。这两项操作均按字数计费,且通过 API 调用时须设置 auto_apply: true;由于自动化模式下没有审核环节,结果将在完成后直接生效。请轮询 GET ``/generation-jobs/{id}。若想在应用内进行审核,可选择替代方案:从文档构建。只需关联一次,之后无论是通过 API、MCP 还是编辑器运行,都会自动使用,且无需额外费用:
curl -s -X PATCH $BASE/documents/<id>/translation-settings \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"glossary_ids": ["<glossary_id>"], "styleguide_version_ids": ["<active_version_id>"]}'风格指南通过有效版本 ID(从 GET /styleguides/{id} 获取)进行关联;[] 用于取消关联;这两者也可在创建文档时用于 POST /documents。UI 界面:术语库、风格指南。翻译记忆库无需手动关联:每条完成的翻译都会被自动索引并复用。您可以查询记忆库(POST /translat``ion-memory/query,免费)、从 TMX/XLIFF 预置数据(POST /translation-memory/import,免费)或导出全部内容(GET /translation-memory/export-tmx)。请参阅翻译记忆库和导入现有翻译。
团队
团队密钥统一计费至团队资金池,并自动继承团队的项目、术语库、风格指南和翻译记忆库。在团队中创建文档时,只需传入团队项目的 project_id(可通过 GET /projects 获取;团队项目均带有 team_id)。除此之外,其余操作与个人版完全一致。团队和项目需在应用内进行设置:项目、团队与邀请。
运行与审核关卡
POST /runs 处理单一语言版本;POST /group-runs 则会分发至所有目标语言,并按需创建缺失的版本。两者均支持免费预估、Idempotency-Key 以及取消操作。若工作流步骤设置为等待审核,运行将会挂起:GET /runs/{id} 会报告 gate_pending: true 并附带审核发现的摘要。暂停期间,人工端的操作通过审核面板和引导式审核进行;脚本端则为:
# continue downstream steps (all blocks, or a reviewed subset):
curl -s -X POST $BASE/runs/<id>/gate/approve \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"approved_block_ids": ["…"]}' # omit the field to approve all
# a gate with nothing downstream is dismissed instead:
curl -s -X POST $BASE/runs/<id>/gate/acknowledge -H "Authorization: Bearer $KEY"审核关卡绝不会自动推进:必须有人或程序调用批准操作,无论是您的脚本、MCP 助手,还是应用内的操作人员。目前没有可以在启动运行时预先批准关卡的标志;如果完全不需要停顿,请使用不含审核步骤的工作流。
输出格式
针对语言版本 ID 调用 GET /documents/{id}/content?format=<f>:
format= | 返回内容 |
|---|---|
json | 逐区块源文本与有效译文(默认) |
strings | 完整目录,每种语言均以单元 ID 为键 |
markdown / html | 渲染后的文本(原生 HTML 文档则返回 html) |
source | 以文档原生格式忠实导出的副本 |
docx / pdf | 已回填译文的 Word 文档,或渲染生成的 PDF |
xliff / tmx / csv | CAT 工具、翻译记忆库 (TM) 与电子表格的数据互换 |
针对主文档调用 format=strings 即可在单次请求中获取所有语言版本,直接用于提交。
仅更新差异部分
对于字符串目录,只需重新提交完整的当前文件,服务器会自动处理差异对比:
# 1: re-import the complete current corpus; Transept diffs it by unit id
curl -s -X POST $BASE/documents/<master>/import-strings \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d @app-ui.tstrings.json > delta.json
# → { units: {added, changed, unchanged, removed}, delta_block_ids: {<doc_id>: [block ids]} }
# 2: feed delta_block_ids VERBATIM into a group run; only those blocks translate
jq -n --slurpfile d delta.json \
'{document_id: $d[0].master_document_id, template_id: "end_to_end",
target_languages: "all", block_ids: $d[0].delta_block_ids}' \
| curl -s -X POST $BASE/group-runs \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" --data-binary @-未改动的字符串将保留其译文和审核状态;修改一个字符串也仅消耗一个字符串的额度。(在重新导入时内联传递 run: {template_id},即可在同一次调用中分发增量任务。)这就是 “仅运行变动内容” 功能在 API 端的实现方式。对于源文本发生变动的正文文档,POST /documents/{``id}/resync-source 会重新对齐区块:未改动的区块保留译文,发生变动的区块则标记为过期,而“仅更新”运行模式将仅处理这些变动部分。由于重新同步会重新解析存储的源文件,因此请通过导入路径编辑源文件,而不要直接修补区块。
AI 助手 (MCP)
其工作流程与智能体工具一致,接口地址为 https://app.transept.ai/api/public/v1/mcp:me_get → document_create → group_run_estimate / group_run_start → group_run_get → document_content_get。连接采用 OAuth 方式(通过浏览器授权即可,无需手动粘贴密钥;无界面环境亦可使用 Bearer 密钥)。工具会遵循已授予的权限,且任何涉及字数消耗的操作都会先返回预估值,必须由助手显式确认。各客户端配置详见:连接您的 AI 助手。
常见问题
预估、重新导入或导入已有译文会消耗字数吗?
不会。预估不仅完全免费,且无副作用;重新导入目录同样无需付费(差异对比在服务器端完成);文件中原有的译文会作为已完成内容直接导入,不产生任何费用。只有当 Transept 真正为您翻译内容时,才会消耗字数。预估上限最终将按实际消耗结算,并释放未使用的预留额度。
自动化流程可以跳过审核环节吗?
不能。如果工作流步骤被设为等待审核,运行就会挂起,直到通过审批:这可以由脚本调用审批接口完成,也可以由人工在应用中操作。如果流水线需要实现端到端的无人值守运行,请在配置工作流时移除审核步骤;系统并没有提供可以绕过既定关卡的参数。
免费版可以使用 API 吗?
是的。包括免费版在内的所有计划均提供 API 密钥,不设额外门槛。使用限制仅取决于您的字数余额,这与在编辑器中完全一致;免费版每月赠送的字数在 API 上的使用规则也与其他场景完全相同。
如何无需手动导出,直接本地化邮件模板?
将您的邮件平台指向 Payload Webhook 触发器:通过 POST 发送的模板正文将转换为文档,经工作流翻译后,导出的 HTML 将保留原始结构并完成译文替换。占位符和模板语法在整个往返过程中均受保护。各平台的具体对接机制请参阅邮件本地化指南。
哪里可以找到详尽的接口参考?
请参阅交互式 Swagger 参考文档,它基于同一份可导入 n8n、Zapier 或代码生成器的 OpenAPI 规范(原始 JSON)生成。本指南是带您快速上手的文字引导,而规范则是正式的技术契约。
作者

Transept 联合创始人,笔名“Mevkh”。拥有语言文学学位,随后转向软件开发:作为高级 AI 工程师,他为 50,000+ 用户交付了生产级 LLM 功能——包括 RAG、智能体工具和 LLM-as-judge 评估。他也是一位慢工出细活的小说家,抽屉里藏着 120,000 字的讽刺浪漫奇幻小说。正是 AI 翻译与他自身文笔之间的摩擦,促成了这一切的开始。