Запустите массовый фоновый перевод опубликованных документов схемы на целевые языки.
Поставьте в очередь фоновый перевод всех опубликованных документов из одной или нескольких компонентных схем на набор целевых языков. Результаты вставляются или обновляются в таблице 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.
Рассматриваются только опубликованные документы с непустым опубликованным содержимым.
{
"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 Accepted, когда переводы поставлены в очередь200 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 — токен-носитель отсутствует или недействителен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 — токен-носитель отсутствует или недействителен404 Not Found — задание не существует или больше не хранитсяВ настоящее время задания на перевод хранятся в памяти. Статус задания теряется при перезапуске сервиса перевода, а развертывания с несколькими экземплярами требуют привязки маршрутизации.