|
Документация
Заказать демоПлатформа
ПлатформаMCPCLIAPI
Процессы
РуководстваЖурнал изменений

Добро пожаловать

  • Обзор
  • Аутентификация
  • Ошибки и коды статуса
  • Подписи webhook

Локализация

  • Обзор
  • Создать задачи
  • Заблокировать непереводимые ключи
  • Отслеживание группы заданий
  • Получить одно задание
  • Список заданий
  • Доставка через вебхук
  • Прогресс в реальном времени (WebSocket)

Пайплайн

  • Обзор
  • AI-редактирование перед локализацией
  • Проверка человеком
  • AI-оценка (post-edit)
  • Перефразирование для естественного звучания
  • Проверка обратным переводом
  • Настройка пайплайна
  • Как отслеживать запуски пайплайна

Развёртывание

  • Обзор
  • Создать задание развёртывания
  • Типы источников
  • Что извлекает AI
  • Доставка webhook
  • Прогресс в реальном времени (WebSocket)

Синхронный

  • Локализация
  • Распознавание

Управление движком

  • Предложения для движка

Отслеживание группы заданий

Вы создали группу, получили в ответ groupId, и теперь несколько локалей переводятся параллельно. Дальше вам нужно снова и снова получать ответ на один вопрос, пока всё не завершится: что прямо сейчас происходит со всей отправкой? Не по каждой локали отдельно, а в целом. Сколько уже завершено, сколько вернулось с предупреждениями, сколько завершилось с ошибкой и сколько всё ещё в работе.

Именно это и возвращает этот endpoint. Один запрос — и статусы всех локалей в одном ответе. Если вы только начинаете работать с асинхронной локализацией, начните с обзора Async Localization API.

На этой странице

  • Получить группу заданий
  • Ответ
  • Статусы группы
  • Как часто опрашивать
  • Что будет, если одна локаль завершится с ошибкой

Получить группу заданий#

Получите статус группы заданий и всех её дочерних заданий.

text
GET /jobs/localization/groups/:groupId

Передайте свой API-ключ в заголовке X-API-Key — тот же ключ, который вы использовали, чтобы создать группу. groupId — это id с префиксом ljg_ из ответа 202.

Ответ#

Ответ — это снимок состояния всей отправки: собственный status группы, четыре счётчика и дочерние задания с их индивидуальными статусами. Именно этот объект вы читаете при каждом опросе.

json
{
  "groupId": "ljg_A1b2C3d4E5f6G7h8",
  "status": "processing",
  "sourceLocale": "en",
  "totalJobs": 3,
  "completedJobs": 1,
  "completedWithWarningsJobs": 0,
  "failedJobs": 0,
  "jobs": [
    { "id": "ljb_A1b2C3d4E5f6G7h8", "targetLocale": "de", "status": "completed", "warnings": [], "completedAt": "2026-03-16T10:30:04.000Z" },
    { "id": "ljb_B2c3D4e5F6g7H8i9", "targetLocale": "fr", "status": "processing", "warnings": [], "completedAt": null },
    { "id": "ljb_C3d4E5f6G7h8I9j0", "targetLocale": "ja", "status": "queued", "warnings": [], "completedAt": null }
  ],
  "createdAt": "2026-03-16T10:30:00.000Z"
}

Три поля счётчиков для терминальных заданий — completedJobs, completedWithWarningsJobs и failedJobs — в сумме дают число локалей, которые уже завершились. Остальные из totalJobs всё ещё находятся в состояниях queued или processing. В примере выше 1 из 3 завершена, а 2 всё ещё в работе, поэтому достаточно просто посмотреть на счётчики, чтобы понять: процесс ещё не завершён — даже не заглядывая в массив jobs. Когда эта сумма достигает totalJobs, группа переходит в терминальное состояние.

Массив warnings у каждого задания показывает некритичные сбои на этапах пайплайна — например, если не отработал шаг предредактирования или обратного перевода. Непустой массив означает, что задание всё равно вернуло результат, но как минимум один необязательный этап не завершился. Само переведённое outputData находится в отдельном задании — запрашивайте его, когда будете готовы читать содержимое завершённой локали.

Статусы группы#

Поле status группы сводит статусы дочерних заданий в одно значение. Вы опрашиваете endpoint, пока оно не перейдёт в терминальное состояние.

Статус группыЧто означает
pendingГруппа создана, но ни одно задание ещё не запущено
processingХотя бы одно задание в работе
completedВсе задания успешно завершены
completed_with_warningsВсе задания вернули результат, но в одном или нескольких заданиях не прошёл хотя бы один необязательный этап пайплайна
partialЧасть заданий завершилась успешно, часть — с ошибкой
failedВсе задания завершились с ошибкой

Именно в различии между completed, completed_with_warnings и partial и заключается ценность этого endpoint: он отделяет «все локали доставлены» от «все локали доставлены, но некоторые — с предупреждением» и от «часть локалей доставлена, а часть — нет». Иначе эти три исхода пришлось бы восстанавливать, читая каждое задание по отдельности. partial — это не ошибка, а реальное состояние, которое группа явно сообщает, чтобы ваш код мог отреагировать правильно.

Как часто опрашивать#

Интервал опроса

Для большинства заданий обработка занимает 2–8 секунд на язык. Если вы используете опрос вместо вебхуков или WebSocket, разумная отправная точка — интервал в 2 секунды.

Опрос — самый простой способ отслеживать группу, и для короткого батча он вполне подходит. Но это всё же менее сильный вариант, и об этом стоит говорить честно: каждый опрос — это лишний round-trip, независимо от того, изменилось что-то или нет, а о завершении локали вы узнаёте только на следующем тике, а не в тот же момент.

Если вам нужен каждый результат сразу, как только он готов, не опрашивайте — пусть платформа сообщит сама. Она отправляет результат каждой завершённой локали на ваш webhook URL по мере готовности, а WebSocket connection на группе пушит полный снимок состояния при каждом изменении, так что ваш UI обновляется без лишних запросов. Выбирайте опрос, когда endpoint для вебхука или постоянное соединение — это избыточно для задачи; выбирайте push, когда для UI важна минимальная задержка.

Что будет, если одна локаль завершится с ошибкой#

Если смотреть на фразу «перевод сразу на много локалей» немного скептически, первым возникает очевидный вопрос: что будет с остальными, если одна локаль упадёт? Ответ — прямо в API-ответе.

Каждая локаль — это отдельное независимое задание. Если немецкий перевод завершился успешно, а японский — с ошибкой, немецкий перевод всё равно считается готовым и доставляется как обычно — сбой его не откатывает. Задание с ошибкой появляется в группе с status: "failed", счётчик failedJobs увеличивается, а статус группы сводится к partial:

json
{
  "groupId": "ljg_A1b2C3d4E5f6G7h8",
  "status": "partial",
  "sourceLocale": "en",
  "totalJobs": 3,
  "completedJobs": 2,
  "completedWithWarningsJobs": 0,
  "failedJobs": 1,
  "jobs": [
    { "id": "ljb_A1b2C3d4E5f6G7h8", "targetLocale": "de", "status": "completed", "warnings": [], "completedAt": "2026-03-16T10:30:04.000Z" },
    { "id": "ljb_B2c3D4e5F6g7H8i9", "targetLocale": "fr", "status": "completed", "warnings": [], "completedAt": "2026-03-16T10:30:05.000Z" },
    { "id": "ljb_C3d4E5f6G7h8I9j0", "targetLocale": "ja", "status": "failed", "warnings": [], "completedAt": null }
  ],
  "createdAt": "2026-03-16T10:30:00.000Z"
}

Две локали доставлены, одна — нет, и это видно по счётчикам без лишней проверки. Чтобы повторить попытку, отправьте новый запрос только для локалей, которые завершились с ошибкой, и укажите новый ключ идемпотентности. Полное описание ошибки для неуспешной локали — errorMessage — находится в отдельном задании; группа даёт вам только счётчик и итоговый статус.

Частичные сбои — это нормальное состояние

partial означает ровно то, что показывают счётчики: часть локалей завершилась, часть — с ошибкой. Успешные локали уже доставлены. Откатывать нечего, и не нужно заново тратить ресурсы на те локали, которые уже прошли успешно — повторять нужно только то, что упало.

Что дальше#

Получить отдельное задание
Посмотреть translated outputData, warnings и сообщение об ошибке для одной локали
Доставка через вебхук
Получайте результат по каждой локали сразу после завершения
Прогресс в реальном времени (WebSocket)
Передавайте снимки состояния группы в ваш UI по мере готовности каждой локали

Эта страница была полезной?

Max PrilutskiyMax Prilutskiy·Обновлено 12 дней назад·4 минуты чтения