Crea una traduzione
Crea una traduzione usando una sola fonte: contenuto JSON per testo UTF-8 da mantenere invariato, JSON file_url per un download HTTPS senza reindirizzamenti, JSON upload_id per un caricamento temporaneo completato con queste stesse credenziali oppure multipart/form-data con un campo file per i byte binari locali. Se usi upload_id, ometti filename: il nome è già associato alla sessione. Se ripeti un upload_id, viene restituito il batch esistente senza modificarne l’istruzione. Per le altre fonti, invia un header Idempotency-Key (da 1 a 255 caratteri stampabili, va bene un UUID) per poter ripetere la richiesta in sicurezza se la risposta va persa: la richiesta ripetuta restituisce il batch creato al primo tentativo, senza recuperare o archiviare di nuovo il file né ripetere la pianificazione. Se la stessa chiave viene usata con contenuti diversi, la richiesta viene rifiutata con 409 idempotency_key_reused. Negli altri casi, filename è facoltativo e, se non specificato, viene dedotto. Includi instruction per ricevere il piano verificato, i conteggi misurati, il costo in crediti e un’anteprima dell’estrazione; omettilo per ricevere suggested_instructions. Controlla plan.not_included prima di approvare. La creazione e la pianificazione non costano crediti. I limiti per formato sono indicati in GET /v1/account. La traduzione appare nell’app web.
POST/v1/batches
Richiede batches:create. Creare una traduzione non costa nulla: i crediti vengono riservati solo quando approvi un piano.
Scegliere come inviare il file
Scegli il metodo di trasferimento più adatto alla posizione del documento e alle funzionalità del client.
| Metodo di trasferimento | Da usare per | Note |
|---|---|---|
JSON con upload_id | Un file locale inviato tramite una sessione di caricamento temporaneo | Usa le stesse credenziali con cui hai creato la sessione. Ometti filename. Se ripeti la richiesta, viene restituita la traduzione esistente senza modificarne le istruzioni. |
JSON con content | Qualsiasi formato di testo | Il file stesso come testo UTF-8. È il metodo più semplice per un agente che ha già il contenuto in memoria. |
JSON con file_url | Un file già ospitato online | Solo HTTPS, recuperato dal server. I reindirizzamenti non vengono seguiti, quindi fornisci l’URL finale. |
multipart/form-data | File binari locali, inclusi XLSX, DOCX, PPTX, PDF, IDML e ZIP | Invia i byte originali nel campo file. È il metodo di trasferimento per file locali della CLI. |
filename è facoltativo, ma è consigliabile specificarlo. Il formato viene identificato in base all’estensione, quindi nomi come strings.xml ed export.csv attivano parser diversi anche se i byte sono identici.
Ripetere la richiesta in sicurezza
Invia un’intestazione Idempotency-Key (da 1 a 255 caratteri stampabili; un UUID è una buona scelta), così un nuovo tentativo dopo una risposta persa restituisce la traduzione creata dal primo tentativo, invece di crearne una seconda. La richiesta ripetuta riceve risposta prima che il file venga recuperato o archiviato e non avvia di nuovo la pianificazione, quindi non costa nulla. La chiave è associata ai dati inviati: se riutilizzi la stessa chiave con un file, un nome o un’istruzione diversi, la richiesta viene rifiutata con idempotency_key_reused. Usa una nuova chiave per una nuova attività. Se non puoi usare intestazioni (strumenti MCP, Code Mode), passa idempotency_key nel corpo della richiesta. Se la creazione include un’instruction, la risposta restituisce plan_revision insieme al piano: passalo come expected_plan_revision quando approvi.
Passaggi successivi
La risposta fornisce un id, da usare come batch_id nei percorsi successivi. La sequenza è sempre la stessa:
POST /v1/batches/{batch_id}/plan: descrivi cosa tradurre, con parole tue.POST /v1/batches/{batch_id}/approve: usa i crediti e avvia la traduzione.GET /v1/batches/{batch_id}: controlla lo stato finché l’elaborazione non è terminata.GET /v1/batches/{batch_id}/result: recupera il risultato. Restituisce un link firmato, non il file stesso.
Risposta
Crea una traduzione da un file
dataobjectrequiredrequest_idstringrequiredCodici possibili: invalid_request, unknown_field, invalid_parameter, invalid_cursor
errorobjectrequiredrequest_idstringrequiredCodici possibili: authentication_required, invalid_api_key, api_key_expired, api_key_revoked
errorobjectrequiredrequest_idstringrequiredCodici possibili: insufficient_credits
errorobjectrequiredrequest_idstringrequiredCodici possibili: insufficient_scope, feature_not_available, admin_required, file_retention_expired
errorobjectrequiredrequest_idstringrequiredCodici possibili: batch_not_found, glossary_not_found, resource_not_found
errorobjectrequiredrequest_idstringrequiredCodici possibili: glossary_already_exists, result_not_ready, batch_not_editable, idempotency_key_reused, no_plan_yet, plan_changed, batch_not_awaiting_approval
errorobjectrequiredrequest_idstringrequiredCodici possibili: file_expired
errorobjectrequiredrequest_idstringrequiredCodici possibili: request_too_large, file_too_large, result_too_large
errorobjectrequiredrequest_idstringrequiredCodici possibili: language_not_supported, invalid_language_pair, glossary_term_limit_reached, glossary_limit_reached, invalid_glossary_terms, unsupported_format, file_fetch_failed, plan_invalid
errorobjectrequiredrequest_idstringrequiredCodici possibili: rate_limited
errorobjectrequiredrequest_idstringrequiredCodici possibili: internal_error
errorobjectrequiredrequest_idstringrequiredCodici possibili: service_unavailable
errorobjectrequiredrequest_idstringrequired