Iniciar la traducción masiva en segundo plano de los documentos publicados de un esquema a los idiomas de destino.
Poner en cola la traducción en segundo plano de todos los documentos publicados de uno o más esquemas de componentes a un conjunto de idiomas de destino. Los resultados se insertan o actualizan en la tabla translations a medida que se completa cada traducción.
Endpoint: POST /translation
Autenticación: JWT de tipo Bearer (WorkOS)
{
"websiteId": "<uuid>",
"schemaNames": ["post", "hero"],
"languages": ["fr", "es", "de"]
}
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
websiteId | uuid | sí | Sitio web que contiene los documentos de origen. |
schemaNames | string[] | sí* | Esquemas de componentes que se traducirán. Se eliminan los nombres duplicados. |
schemaName | string | sí* | Alternativa heredada para enviar un único esquema. |
languages | string[] | sí | Códigos de los idiomas de destino compatibles. Se eliminan los códigos duplicados. |
* Proporcione schemaNames o schemaName.
Solo se tienen en cuenta los documentos publicados con contenido publicado no nulo.
{
"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"
}
Devuelve:
202 Accepted cuando las traducciones se ponen en cola200 OK cuando todas las traducciones ya están actualizadas| Campo | Descripción |
|---|---|
job_id | Identificador utilizado para consultar el progreso del trabajo. |
status | Estado actual del trabajo. |
documents_processed | Número de documentos de origen aptos encontrados. |
translations_scheduled | Número de pares documento-idioma puestos en cola. |
translations_skipped | Número omitido porque los hashes de origen están actualizados. |
translations_completed | Número de traducciones completadas correctamente. |
translations_failed | Número de traducciones fallidas. |
reused | Indica si la respuesta hace referencia a un trabajo activo existente. |
Los posibles estados del trabajo son:
preparingqueuedrunningcompletedcompleted_with_errorsfailedCada par documento-idioma almacena un hash SHA-256 del contenido publicado del documento de origen.
Una traducción se omite cuando su hash de origen almacenado coincide con el contenido publicado actual. Esto permite llamar repetidamente al endpoint sin volver a traducir contenido que no ha cambiado.
Si el contenido publicado cambia mientras hay un trabajo equivalente activo, el servicio rechaza la nueva solicitud. Vuelva a enviarla después de que finalice el trabajo activo.
La traducción se ejecuta de forma asíncrona después de la respuesta inicial.
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 — faltan esquemas o idiomas, un idioma no es compatible o el lote supera el límite configurado401 Unauthorized — falta el token de tipo bearer o no es válido409 Conflict — hay trabajo coincidente activo, pero el contenido de origen publicado ha cambiado500 Internal Server Error — no se pudieron preparar los documentos de origen o falló una operación de base de datosConsultar el progreso más reciente de un trabajo de traducción.
Endpoint: GET /translation-jobs/{job_id}
Autenticación: JWT de tipo Bearer (WorkOS)
La respuesta utiliza el mismo objeto de trabajo que devuelve POST /translation, con el estado y los recuentos de progreso actualizados.
{
"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 — falta el token de tipo bearer o no es válido404 Not Found — el trabajo no existe o ya no se conservaActualmente, los trabajos de traducción se conservan en memoria. El estado del trabajo se pierde cuando se reinicia el servicio de traducción, y las implementaciones con varias instancias requieren enrutamiento persistente.