Créer une session d’envoi
Préparez le téléversement d’un fichier local pour un agent capable de lire les octets et d’effectuer des appels HTTP PUT hors de MCP. Renvoie upload_url, method, les en-têtes exacts, upload_id et les instructions. Envoyez les octets bruts du fichier d’origine avec l’en-tête Authorization temporaire renvoyé, jamais avec une clé API d’espace de travail ni un jeton OAuth. L’autorisation de téléversement expire après 10 minutes et permet une seule tentative PUT. Une fois le téléversement réussi, envoyez upload_id pour créer une traduction avec le même identifiant dans l’heure qui suit. Aucun crédit n’est utilisé. Maximum de 20 téléversements en attente et de 120 sessions par heure et par espace de travail.
POST/v1/uploads
Nécessite batches:create. La création d’une session ne coûte aucun crédit et ne crée pas de traduction. Envoyez un nom de fichier simple, avec une extension prise en charge, ainsi que la taille exacte des octets d’origine :
{ "filename": "catalogue.xlsx", "size_bytes": 4096 }La réponse contient upload_id, upload_url, method, headers, expires_at, consume_until et des instructions en langage clair. Utilisez exactement l’URL et les en-têtes renvoyés avec un client HTTP externe, puis créez la traduction avec upload_id en utilisant le même identifiant d’accès. Le nom du fichier est déjà associé à la session.
const session = createUploadResponse.data;
const uploaded = await fetch(session.upload_url, {
method: session.method,
headers: session.headers,
body: originalFileBytes,
redirect: "error",
});
if (!uploaded.ok) throw new Error(`Upload failed: ${uploaded.status}`);
// Use the original workspace credential for POST /v1/batches:
// { upload_id: session.upload_id, instruction: "Translate into French" }L’en-tête temporaire Authorization n’autorise qu’une seule tentative d’envoi de ce document pendant 10 minutes. L’URL seule ne donne aucun accès. Ne remplacez jamais cet en-tête par une clé API d’espace de travail ou un jeton OAuth, n’insérez pas de secrets dans une URL, ne suivez pas les redirections et ne consignez pas les en-têtes temporaires dans les journaux. Le secret d’envoi ne permet pas de lire des documents, de créer des traductions ni d’autoriser des dépenses. La révocation de la connexion ou du droit associé invalide les autorisations d’envoi inutilisées.
Le nombre d’octets reçus doit correspondre à size_bytes. La limite propre à chaque format est vérifiée avant l’émission de l’autorisation. Créez la traduction dans l’heure. Un espace de travail peut avoir 20 envois en attente et créer 120 sessions par heure. Les fichiers inutilisés peuvent être supprimés après 24 heures et sont purgés lors du nettoyage quotidien. Une fois le fichier associé à une traduction, les règles habituelles de conservation s’appliquent. La récupération par upload_id est possible jusqu’au nettoyage de la session, au moins 24 heures après son émission. Conservez l’ID de lot pour retrouver ensuite la traduction dans votre historique.
Exigences applicables aux agents
L’environnement d’exécution de l’agent doit avoir accès aux fichiers locaux et disposer d’un client HTTP capable d’envoyer des requêtes PUT brutes. MCP ne peut pas, à lui seul, envoyer des octets binaires, et AI Glot Code Mode n’a ni accès aux fichiers locaux ni accès HTTP sortant. Si ces fonctionnalités font défaut, indiquez clairement à l’utilisateur que l’assistant ne peut pas envoyer la pièce jointe. Recommandez-lui d’effectuer l’envoi dans l’application Web AI Glot, d’utiliser la CLI ou de fournir un lien de téléchargement HTTPS pour file_url. N’affirmez jamais qu’un envoi a réussi sans l’avoir vérifié.
Après l’envoi, examinez le plan de traduction et ses exclusions avant d’approuver le coût en crédits. Envoyer les octets du fichier décrit les nouvelles tentatives et les échecs.
Réponse
Créer une session temporaire de téléversement de 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, no_plan_yet, 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