Créer une traduction
Créez une traduction en utilisant exactement une seule source : le contenu JSON pour du texte UTF-8 à traduire tel quel, file_url en JSON pour un téléchargement HTTPS sans redirection, upload_id en JSON pour un téléversement temporaire terminé avec ces mêmes identifiants, ou multipart/form-data avec un champ file pour des données binaires locales. N’indiquez pas filename avec upload_id : la session a déjà enregistré le nom du fichier. Si vous réutilisez un upload_id, le lot existant est renvoyé sans que son instruction soit modifiée. Pour les autres sources, envoyez un en-tête Idempotency-Key (de 1 à 255 caractères imprimables, un UUID convient) afin de pouvoir réessayer sans risque si la réponse est perdue : le premier lot créé est renvoyé, sans récupérer ni stocker le fichier ni relancer la planification. Si vous réutilisez la même clé avec un contenu différent, la requête est refusée avec le code 409 idempotency_key_reused. Sinon, filename est facultatif et son nom est déduit s’il n’est pas fourni. Incluez instruction pour recevoir le plan vérifié, les quantités mesurées, le coût en crédits et l’aperçu de l’extraction. Omettez-le pour recevoir suggested_instructions. Vérifiez plan.not_included avant d’approuver. La création et la planification ne coûtent aucun crédit. Les limites par format sont indiquées sur GET /v1/account. La traduction apparaît dans l’application web.
POST/v1/batches
Nécessite batches:create. La création d’une traduction est gratuite : les crédits sont réservés uniquement lorsque vous approuvez un plan.
Choisir comment envoyer le fichier
Choisissez le mode de transfert adapté à l’emplacement du document et aux capacités de votre client.
| Mode de transfert | Utilisation | Remarques |
|---|---|---|
JSON avec upload_id | Fichier local envoyé via une session de téléversement temporaire | Utilisez les mêmes identifiants que ceux ayant servi à créer la session. Omettez filename. Une nouvelle requête de création renvoie la traduction existante sans modifier ses consignes. |
JSON avec content | Tout format texte | Le contenu du fichier sous forme de texte UTF-8. C’est la méthode la plus simple pour un agent qui a déjà le contenu en mémoire. |
JSON avec file_url | Fichier déjà hébergé | HTTPS uniquement, avec récupération côté serveur. Les redirections ne sont pas suivies : indiquez l’URL finale. |
multipart/form-data | Fichiers binaires locaux, notamment XLSX, DOCX, PPTX, PDF, IDML et ZIP | Envoyez les octets d’origine dans le champ file. C’est le mode de transfert des fichiers locaux de la CLI. |
filename est facultatif, mais il est préférable de le renseigner. L’extension permet d’identifier le format : avec les mêmes octets, un nom comme strings.xml et un nom comme export.csv feront appel à des analyseurs différents.
Réessayer sans risque
Envoyez un en-tête Idempotency-Key (de 1 à 255 caractères imprimables ; un UUID convient) afin qu’une nouvelle tentative après la perte d’une réponse renvoie la traduction créée lors de la première tentative, au lieu d’en créer une deuxième. Une requête répétée reçoit une réponse avant la récupération ou le stockage du fichier et ne déclenche pas de nouvelle planification : elle est donc gratuite. La clé est liée aux données envoyées : si vous réutilisez la même clé avec un fichier, un nom ou des consignes différents, la requête est refusée avec idempotency_key_reused. Utilisez une nouvelle clé pour tout nouveau travail. Lorsque les en-têtes ne sont pas disponibles (outils MCP, Code Mode), transmettez idempotency_key dans le corps de la requête. Si la création inclut une instruction, la réponse renvoie plan_revision avec le plan : transmettez cette valeur dans expected_plan_revision lorsque vous approuvez le plan.
Étapes suivantes
La réponse fournit un id, utilisé comme batch_id dans les chemins suivants. La séquence est toujours la même :
POST /v1/batches/{batch_id}/plan: indiquez avec vos propres mots ce qu’il faut traduire.POST /v1/batches/{batch_id}/approve: dépensez des crédits et lancez le traitement.GET /v1/batches/{batch_id}: interrogez le statut jusqu’à la fin du traitement.GET /v1/batches/{batch_id}/result: récupérez le résultat. La réponse contient un lien signé, et non le fichier lui-même.
Réponse
Créer une traduction à partir d'un fichier
dataobjectrequiredrequest_idstringrequiredCodes possibles : invalid_request, unknown_field, invalid_parameter, invalid_cursor
errorobjectrequiredrequest_idstringrequiredCodes possibles : authentication_required, invalid_api_key, api_key_expired, api_key_revoked
errorobjectrequiredrequest_idstringrequiredCodes possibles : insufficient_credits
errorobjectrequiredrequest_idstringrequiredCodes possibles : insufficient_scope, feature_not_available, admin_required, file_retention_expired
errorobjectrequiredrequest_idstringrequiredCodes possibles : batch_not_found, glossary_not_found, resource_not_found
errorobjectrequiredrequest_idstringrequiredCodes possibles : glossary_already_exists, result_not_ready, batch_not_editable, idempotency_key_reused, no_plan_yet, plan_changed, batch_not_awaiting_approval
errorobjectrequiredrequest_idstringrequiredCodes possibles : file_expired
errorobjectrequiredrequest_idstringrequiredCodes possibles : request_too_large, file_too_large, result_too_large
errorobjectrequiredrequest_idstringrequiredCodes possibles : language_not_supported, invalid_language_pair, glossary_term_limit_reached, glossary_limit_reached, invalid_glossary_terms, unsupported_format, file_fetch_failed, plan_invalid
errorobjectrequiredrequest_idstringrequiredCodes possibles : rate_limited
errorobjectrequiredrequest_idstringrequiredCodes possibles : internal_error
errorobjectrequiredrequest_idstringrequiredCodes possibles : service_unavailable
errorobjectrequiredrequest_idstringrequired