Criar uma tradução
Crie uma tradução usando exatamente uma fonte: conteúdo JSON para texto UTF-8 literal, JSON file_url para um download HTTPS sem redirecionamentos, JSON upload_id para um upload temporário concluído com esta mesma credencial ou multipart/form-data com um campo file para bytes binários locais. Omita filename ao usar upload_id. A sessão já tem o nome do arquivo. Repetir um upload_id retorna o lote existente sem alterar a instrução. Nas demais fontes, envie um cabeçalho Idempotency-Key (de 1 a 255 caracteres imprimíveis. Um UUID serve) para que seja seguro tentar novamente após perder a resposta: uma repetição retorna o lote criado na primeira tentativa, sem buscar nem armazenar o arquivo ou fazer o planejamento novamente. A mesma chave com conteúdo diferente é recusada com 409 idempotency_key_reused. Caso contrário, filename é opcional e, se não for informado, será inferido. Inclua instruction para receber o plano verificado, as contagens calculadas, o custo em créditos e uma prévia da extração. Omita-o para receber suggested_instructions. Confira plan.not_included antes da aprovação. Criar e planejar não custa créditos. Os limites por formato estão em GET /v1/account. A tradução aparece no app da web.
POST/v1/batches
Requer batches:create. Criar uma tradução não custa nada: os créditos só são reservados quando você aprova um plano.
Escolha como enviar o arquivo
Escolha o método de envio de acordo com onde o documento está e com os recursos do seu cliente.
| Método | Use quando | Observações |
|---|---|---|
JSON com upload_id | Para um arquivo local enviado por uma sessão de envio temporário | Use a mesma credencial que criou a sessão. Omita filename. Se repetir a criação, a tradução existente será retornada sem alteração das instruções. |
JSON com content | Para qualquer formato de texto | Envie o próprio arquivo como texto UTF-8. É a opção mais simples para um agente que já tem o conteúdo na memória. |
JSON com file_url | Para um arquivo já hospedado | Somente HTTPS, com busca feita no servidor. Redirecionamentos não são seguidos, então informe a URL final. |
multipart/form-data | Para arquivos binários locais, incluindo XLSX, DOCX, PPTX, PDF, IDML e ZIP | Envie os bytes originais no campo file. Esse é o método de envio de arquivos locais da CLI. |
filename é opcional, mas vale a pena informá-lo. A extensão é usada para identificar o formato, então nomes como strings.xml e export.csv levam a analisadores diferentes, mesmo que os bytes sejam idênticos.
Como repetir a solicitação com segurança
Envie um cabeçalho Idempotency-Key (com 1 a 255 caracteres imprimíveis; UUID é uma boa opção) para que, se você repetir a solicitação após perder a resposta, receba a tradução criada na primeira tentativa, em vez de criar uma segunda. Uma solicitação repetida é respondida antes que o arquivo seja buscado ou armazenado e não gera um novo planejamento, portanto não tem custo. A chave fica vinculada ao conteúdo enviado: se você reutilizar a mesma chave com outro arquivo, nome ou instrução, a solicitação será recusada com idempotency_key_reused. Use uma nova chave para cada novo trabalho. Quando não for possível enviar cabeçalhos (ferramentas MCP, Code Mode), informe idempotency_key no corpo da solicitação. Uma criação com instruction retorna plan_revision junto com o plano. Envie esse valor como expected_plan_revision ao aprovar.
Próximas etapas
A resposta inclui um id, usado como batch_id nos caminhos seguintes. A sequência é sempre a mesma:
POST /v1/batches/{batch_id}/plan: descreva com suas próprias palavras o que deve ser traduzido.POST /v1/batches/{batch_id}/approve: use créditos e inicie o processo.GET /v1/batches/{batch_id}: consulte o status até a conclusão.GET /v1/batches/{batch_id}/result: obtenha o resultado. A resposta inclui um link assinado, não o arquivo em si.
Resposta
Criar tradução a partir de um arquivo
dataobjectrequiredrequest_idstringrequiredCódigos possíveis: invalid_request, unknown_field, invalid_parameter, invalid_cursor
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: authentication_required, invalid_api_key, api_key_expired, api_key_revoked
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: insufficient_credits
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: insufficient_scope, feature_not_available, admin_required, file_retention_expired
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: batch_not_found, glossary_not_found, resource_not_found
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: glossary_already_exists, result_not_ready, batch_not_editable, idempotency_key_reused, no_plan_yet, plan_changed, batch_not_awaiting_approval
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: file_expired
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: request_too_large, file_too_large, result_too_large
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: language_not_supported, invalid_language_pair, glossary_term_limit_reached, glossary_limit_reached, invalid_glossary_terms, unsupported_format, file_fetch_failed, plan_invalid
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: rate_limited
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: internal_error
errorobjectrequiredrequest_idstringrequiredCódigos possíveis: service_unavailable
errorobjectrequiredrequest_idstringrequired