Vous avez créé un groupe, reçu un groupId, et maintenant plusieurs langues sont en cours de traduction en parallèle. Il vous faut une réponse, encore et encore, jusqu'à ce que tout soit stabilisé : où en est l'ensemble de la soumission à cet instant précis ? Pas langue par langue — la vue agrégée. Combien sont terminées, combien ont produit une sortie avec des avertissements, combien ont échoué, combien sont encore en cours.
C'est exactement ce que renvoie ce point de terminaison. Une seule interrogation, l'état de chaque langue, dans une seule réponse. Vous découvrez la localisation asynchrone ? Commencez par la Vue d'ensemble de l'API de localisation asynchrone.
Sur cette page
Obtenir un groupe de jobs#
Récupérez l'état d'un groupe de jobs et de tous ses jobs enfants.
GET /jobs/localization/groups/:groupIdAuthentifiez-vous avec votre clé API dans l'en-tête X-API-Key, la même clé que vous avez utilisée pour créer le groupe. Le groupId est l'identifiant préfixé par ljg_ renvoyé dans la réponse 202.
Réponse#
La réponse est un instantané de l'ensemble de la soumission : le status du groupe lui-même, quatre décomptes, et les jobs enfants avec leurs états individuels. C'est l'objet que vous consultez à chaque interrogation.
{
"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"
}Les trois champs de décompte pour les jobs terminaux — completedJobs, completedWithWarningsJobs et failedJobs — s'additionnent pour donner le nombre de langues terminées. Le reste de totalJobs est encore en queued ou en processing. Dans l'instantané ci-dessus, 1 sur 3 est terminée et 2 sont encore en cours, donc une simple lecture des décomptes vous indique que le traitement n'est pas encore stabilisé, sans avoir à parcourir le tableau jobs. Quand cette somme atteint totalJobs, le groupe a atteint un état terminal.
Le tableau warnings de chaque job fait remonter les échecs non critiques des étapes du pipeline — par exemple une étape de pré-édition ou de rétrotraduction qui n'a pas abouti. Un tableau non vide signifie que le job a tout de même produit une sortie, mais qu'au moins une étape facultative n'a pas été menée à terme. L'outputData traduit lui-même se trouve sur le job unique : récupérez-le quand vous êtes prêt à consulter le contenu d'une langue terminée.
États du groupe#
Le status du groupe consolide l'état de ses jobs enfants en une seule valeur. Vous interrogez jusqu'à ce qu'il atteigne un état terminal.
| État du groupe | Signification |
|---|---|
pending | Groupe créé, aucun job n'a encore démarré |
processing | Au moins un job est en cours |
completed | Tous les jobs se sont terminés avec succès |
completed_with_warnings | Tous les jobs ont produit une sortie, mais une ou plusieurs étapes facultatives du pipeline ont échoué sur au moins un job |
partial | Certains jobs se sont terminés, d'autres ont échoué |
failed | Tous les jobs ont échoué |
La distinction entre completed, completed_with_warnings et partial est précisément l'intérêt de ce point de terminaison : elle distingue « chaque langue a été livrée » de « chaque langue a été livrée, certaines avec un avertissement » de « certaines langues ont été livrées et d'autres non » — trois issues qu'il vous faudrait sinon reconstituer en lisant chaque job. partial n'est pas une erreur ; c'est un état bien réel que le groupe signale clairement pour que votre code puisse bifurquer en conséquence.
À quelle fréquence interroger#
Intervalle d'interrogation
Pour la plupart des jobs, le traitement prend de 2 à 8 secondes par langue. Si vous interrogez au lieu d'utiliser des webhooks ou WebSocket, un intervalle de 2 secondes est un bon point de départ.
L'interrogation est la façon la plus simple de suivre un groupe, et pour un lot de courte durée, c'est tout à fait acceptable. Mais c'est l'option la moins efficace, et autant être clair là-dessus : chaque interrogation implique un aller-retour, qu'il se soit passé quelque chose ou non, et vous n'apprenez qu'une langue est terminée qu'au cycle suivant, pas au moment précis où elle aboutit.
Si vous voulez chaque résultat dès qu'il est prêt, n'interrogez pas — laissez-vous notifier. La plateforme livre chaque langue terminée à votre URL de webhook dès qu'elle est prête, et une connexion WebSocket sur le groupe envoie un instantané complet de l'état à chaque changement, pour que votre interface se mette à jour sans avoir à le demander. Privilégiez l'interrogation lorsqu'un point de terminaison webhook ou une connexion persistante représente plus d'effort que le job ne le justifie ; privilégiez le push lorsque la latence côté interface est importante.
Quand une langue échoue#
Quand on lit « traduire vers de nombreuses langues à la fois », la première question qui vient naturellement est la plus évidente : qu'arrive-t-il au reste lorsqu'une langue échoue ? Voici la réponse, directement dans la réponse.
Chaque langue est un job indépendant. Si l'allemand réussit mais que le japonais échoue, la traduction allemande est terminée et livrée normalement — l'échec ne l'annule pas. Le job en échec apparaît dans le groupe avec status: "failed", failedJobs s'incrémente, et le groupe bascule sur partial :
{
"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"
}Deux langues ont été livrées, une non, et les décomptes l'indiquent sans que vous ayez besoin d'inspecter quoi que ce soit. Pour réessayer, soumettez une nouvelle requête avec uniquement les langues en échec et une nouvelle clé d'idempotence. La description complète de l'erreur pour une langue en échec — le errorMessage — se trouve sur le job unique ; le groupe vous donne le décompte et le verdict.
Les échecs partiels sont un état normal
partial signifie exactement ce que montrent les décomptes : certaines langues se sont terminées, d'autres ont échoué. Les langues terminées sont déjà livrées. Il n'y a rien à annuler, ni rien à repayer pour les langues qui ont réussi — vous ne relancez que celles qui ont échoué.
