翻译 API 参考
Shisa 翻译 API 通过单个 multipart/form-data 请求在源语言和目标语言之间翻译文本。本页记录了端点、其表单字段、非流式响应和流式格式。
端点
POST https://api.shisa.ai/translate/
在 Authorization 标头中使用标准的 bearer 令牌进行认证:
Authorization: Bearer YOUR_API_KEY
注意
翻译使用标准的 bearer 令牌进行认证,与所有 Shisa 服务相同。缺失或格式错误的 token 将返回 401 错误。完整的约定请参阅 认证。
请求体为 multipart/form-data — 下面的字段作为表单字段发送,而非 JSON。
请求字段
| Field | Type | Required | 说明 |
|---|---|---|---|
text | string | Required | 要翻译的文本。 |
source_lang | string | Required | 源语言代码(例如 ja)。 |
target_lang | string | Required | 目标语言代码(例如 en)。 |
stream | string | Optional | "false"(默认)返回单个 JSON 响应,或 "true" 返回 Server-Sent Events。 |
非流式响应
当 stream=false(默认)时,API 返回一个 OpenAI 风格的 JSON 对象。翻译后的文本位于 choices[0].message.content:
{
"id": "trans_20f537a6-da14-4c98-8ee3-063319c45072",
"object": "translation.completion",
"created": 1768299459,
"model": "shisa-ai/chotto",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "お腹が空いた。"
},
"finish_reason": "stop"
}
],
"transcription": "I am hungry",
"source_lang": "en",
"target_lang": "ja",
"balance": {
"free": 1000,
"premium": 0
},
"usage": {
"prompt_tokens": 3,
"completion_tokens": 1,
"total_tokens": 4
}
}
| Field | 说明 |
|---|---|
id | 翻译的唯一标识符,以 trans_ 为前缀。 |
object | 对象类型。对于非流式响应,此值为 translation.completion。 |
created | 翻译创建时间的 Unix 时间戳(秒)。 |
model | 生成翻译的模型 — shisa-ai/chotto。 |
choices | 翻译选项数组。每个条目包含一个 index、一个带有 role 和 content 的 message,以及一个 finish_reason。 |
choices[0].message.content | 翻译后的文本。 |
transcription | 被翻译的原始源文本。 |
source_lang | 翻译所使用的源语言代码。 |
target_lang | 翻译所使用的目标语言代码。 |
balance | 您剩余的额度余额,包含 free 和 premium 的 token 数量。 |
usage | token 计量:prompt_tokens、completion_tokens 和 total_tokens。 |
流式响应
设置 stream=true 以 Server-Sent Events 形式接收翻译,实现实时传递:
curl -X POST "https://api.shisa.ai/translate/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "text=I am hungry" \
-F "source_lang=en" \
-F "target_lang=ja" \
-F "stream=true"
每个块都是一个 data: 事件,其对象为 translation.completion.chunk,在 choices[0].delta.content 中携带部分文本。最后一个块将 finish_reason 设置为 "stop" 并包含 usage,随后是一个 data: [DONE] 终止符:
data: {"id": "trans_446d7397-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": ""}, "index": 0}]}
data: {"id": "trans_fe190f5d-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": "お"}, "index": 0}]}
data: {"id": "trans_71bbdcec-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": "腹が"}, "index": 0}]}
data: {"id": "trans_7c2d47d7-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": "空いた"}, "index": 0}]}
data: {"id": "trans_99e10e01-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": "。"}, "index": 0}]}
data: {"id": "trans_0a0396bd-...", "choices": [{"delta": {}, "index": 0, "finish_reason": "stop"}], "usage": {...}}
data: [DONE]