Cancelar una traducción
Se detiene en el plazo de una tarea. El trabajo ya completado se cobra (credits_charged en la respuesta, ya que la traducción ejecutada tiene un coste real); el resto de la reserva se libera. El lote pasa a cancelled, un estado terminal propio desde el 2026-09-02. Antes se reportaba como failed con error.code: "cancelled", por lo que cualquier recuento de fallos incluía detenciones deliberadas; ahora, un lote cancelado no devuelve ningún objeto error.
POST/v1/batches/{batch_id}/cancel
Requiere batches:write. La detención se produce al finalizar la tarea actual en lugar de ser instantánea, ya que una tarea en ejecución se completa en lugar de abandonarse a medio escribir.
Importes cobrados
Se cobra el trabajo ya completado y la respuesta indica la cantidad en credits_charged. La parte no utilizada de la reserva se devuelve al saldo.
Esto no es una política de reembolsos, sino un hecho contable: la traducción ejecutada consumió capacidad del modelo. Cancelar pronto cuesta menos; cancelar casi al final cuesta prácticamente el importe total.
Estado final de la traducción
El lote finaliza en cancelled, que es un estado terminal propio y no un tipo de fallo. error.code también es "cancelled", por lo que quien solo lea el error seguirá sabiendo el motivo.
Esta distinción es importante al realizar el sondeo. cancelled significa que nada salió mal: alguien detuvo el trabajo a propósito. failed significa que la traducción no pudo finalizar y error.code indica qué falló. Trata ambos como terminales y deja de realizar el sondeo, pero solo failed merece un reintento o una alerta.
Cualquier contenido que la traducción haya producido previamente no se puede descargar. Un resultado parcial no es un archivo traducido, y devolver uno sería peor que no devolver nada.
Respuesta
Cancelar una traducción en curso
dataobjectrequiredrequest_idstringrequiredCódigos posibles: invalid_request, unknown_field, invalid_parameter, invalid_cursor
errorobjectrequiredrequest_idstringrequiredCódigos posibles: authentication_required, invalid_api_key, api_key_expired, api_key_revoked
errorobjectrequiredrequest_idstringrequiredCódigos posibles: insufficient_credits
errorobjectrequiredrequest_idstringrequiredCódigos posibles: insufficient_scope, feature_not_available, admin_required, file_retention_expired
errorobjectrequiredrequest_idstringrequiredCódigos posibles: batch_not_found, glossary_not_found, resource_not_found
errorobjectrequiredrequest_idstringrequiredCódigos posibles: glossary_already_exists, result_not_ready, batch_not_editable, no_plan_yet, batch_not_awaiting_approval
errorobjectrequiredrequest_idstringrequiredCódigos posibles: file_expired
errorobjectrequiredrequest_idstringrequiredCódigos posibles: request_too_large, file_too_large, result_too_large
errorobjectrequiredrequest_idstringrequiredCódigos posibles: 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 posibles: rate_limited
errorobjectrequiredrequest_idstringrequiredCódigos posibles: internal_error
errorobjectrequiredrequest_idstringrequiredCódigos posibles: service_unavailable
errorobjectrequiredrequest_idstringrequired