スキーマの公開済みドキュメントを対象言語へ一括でバックグラウンド翻訳します。
1つ以上のコンポーネントスキーマに含まれる、公開済みのすべてのドキュメントを、指定した対象言語へバックグラウンドで翻訳するキューに追加します。各翻訳が完了すると、結果は translations テーブルにアップサートされます。
エンドポイント: POST /translation
認証: Bearer JWT(WorkOS)
{
"websiteId": "<uuid>",
"schemaNames": ["post", "hero"],
"languages": ["fr", "es", "de"]
}
| フィールド | 型 | 必須 | 備考 |
|---|---|---|---|
websiteId | uuid | はい | 取得元ドキュメントを含むウェブサイト。 |
schemaNames | string[] | はい* | 翻訳対象のコンポーネントスキーマ。重複する名前は削除されます。 |
schemaName | string | はい* | 単一のスキーマを送信するためのレガシーな代替フィールド。 |
languages | string[] | はい | サポートされている対象言語コード。重複するコードは削除されます。 |
* schemaNames または schemaName のいずれかを指定してください。
公開済みコンテンツが null ではない公開済みドキュメントのみが対象となります。
{
"job_id": "<uuid>",
"website_id": "<uuid>",
"schema_name": null,
"schema_names": ["post", "hero"],
"languages": ["fr", "es", "de"],
"status": "queued",
"documents_processed": 12,
"translations_scheduled": 30,
"translations_skipped": 6,
"translations_completed": 0,
"translations_failed": 0,
"reused": false,
"created_at": "2026-07-15T18:00:00Z",
"updated_at": "2026-07-15T18:00:00Z"
}
返されるステータス:
202 Accepted200 OK| フィールド | 説明 |
|---|---|
job_id | ジョブの進捗を取得するために使用する識別子。 |
status | 現在のジョブステータス。 |
documents_processed | 条件に該当する取得済みのソースドキュメント数。 |
translations_scheduled | キューに追加されたドキュメントと言語の組み合わせ数。 |
translations_skipped | ソースハッシュが最新であるためスキップされた数。 |
translations_completed | 正常に翻訳された数。 |
translations_failed | 失敗した数。 |
reused | レスポンスが既存のアクティブなジョブを参照しているかどうか。 |
ジョブステータスとして次の値が使用されます:
preparingqueuedrunningcompletedcompleted_with_errorsfailed各ドキュメントと言語の組み合わせには、ソースドキュメントの公開済みコンテンツの SHA-256 ハッシュが保存されます。
保存されているソースハッシュが現在の公開済みコンテンツと一致する場合、翻訳はスキップされます。これにより、内容が変更されていない場合は再翻訳せずにエンドポイントを繰り返し呼び出せます。
同等のジョブがアクティブな間に公開済みコンテンツが変更された場合、サービスは新しいリクエストを拒否します。アクティブなジョブの完了後に再度送信してください。
翻訳は初回レスポンスの後に非同期で実行されます。
completed_with_errors で終了します。curl -X POST '{TRANSLATION_API_URL}/translation' \
-H 'Authorization: Bearer <workos-jwt>' \
-H 'Content-Type: application/json' \
-d '{
"websiteId": "<uuid>",
"schemaNames": ["post", "hero"],
"languages": ["fr", "es"]
}'
400 Bad Request — スキーマまたは言語が指定されていない、サポートされていない言語である、またはバッチが設定された上限を超えている401 Unauthorized — bearer トークンがない、または無効である409 Conflict — 一致する処理がアクティブだが、公開済みのソースコンテンツが変更されている500 Internal Server Error — ソースドキュメントを準備できない、またはデータベース操作に失敗した翻訳ジョブの最新の進捗を取得します。
エンドポイント: GET /translation-jobs/{job_id}
認証: Bearer JWT(WorkOS)
レスポンスには、POST /translation で返されるものと同じジョブオブジェクトが使用され、ステータスと進捗カウントが更新されます。
{
"job_id": "<uuid>",
"website_id": "<uuid>",
"schema_name": null,
"schema_names": ["post", "hero"],
"languages": ["fr", "es"],
"status": "running",
"documents_processed": 12,
"translations_scheduled": 24,
"translations_skipped": 0,
"translations_completed": 16,
"translations_failed": 1,
"reused": false,
"created_at": "2026-07-15T18:00:00Z",
"updated_at": "2026-07-15T18:01:30Z"
}
curl '{TRANSLATION_API_URL}/translation-jobs/<job-id>' \
-H 'Authorization: Bearer <workos-jwt>'
401 Unauthorized — bearer トークンがない、または無効である404 Not Found — ジョブが存在しない、または保持期間を過ぎている翻訳ジョブは現在メモリ内に保持されています。翻訳サービスが再起動するとジョブステータスは失われ、複数インスタンスでのデプロイではスティッキールーティングが必要です。