Skip to main content
Documentación de API

Errores y reintentos

Gestiona errores de FreeAIOCR API, códigos HTTP, claves de idempotencia, reintentos seguros y cobros inciertos.

Estas guías se aplican a Imagen a texto e Imagen a tabla. Consulta las entradas, formatos y errores específicos en la referencia de cada API.

Respuestas de error

Ejemplo de error JSON:

{
  "request_id": "b2c8ec98-2a36-4f87-99d2-3d7839b92518",
  "error": {
    "code": "insufficient_balance",
    "message": "Recognition did not complete",
    "required_reservation_usd": "0.011288000"
  }
}

Códigos de estado HTTP

HTTPerror.code
400invalid_request, invalid_idempotency_key, invalid_image
401unauthorized
402insufficient_balance
403account_unavailable
405invalid_request
409idempotency_conflict, request_in_progress
413image_too_large, input_limit_exceeded
415unsupported_media_type
422recognition_blocked
429rate_limit_exceeded, concurrency_limit_exceeded
502recognition_failed, output_truncated, empty_result, invalid_usage
503service_unavailable, settlement_pending, export_failed
504request_timeout
HTTPCausaQué hacer
400 / 413 / 415Solicitud, tamaño o formato de imagen no válidosCorrige el archivo o reduce el tamaño
405Método HTTP incorrectoUsa POST
401Clave API ausente o inválidaRevisa la clave Bearer
403Cuenta no disponibleVerifica la cuenta o resuelve la restricción
402Saldo disponible insuficienteRecarga; revisa error.required_reservation_usd y las reservas de saldo
409Conflicto de idempotencia u operación en cursoSi es request_in_progress, conserva ID e imagen y reintenta tras esperar; si hay conflicto, corrige el ID de operación
429Límite de solicitudes o concurrenciaEspera según Retry-After
422 / 502 confirmadoFallo confirmado de reconocimientoNo hay cargo por reconocimiento; revisa el error
503 / 504 / inciertoEstado del servicio, liquidación o tiempo inciertoNo supongas que no hay cargo; reintenta con el mismo Idempotency-Key e imagen

Los errores se devuelven en JSON con request_id, error.code y error.message. Todas las respuestas incluyen Cache-Control: no-store. El reconocimiento no usa streaming: las respuestas correctas tienen el formato elegido y los errores siguen siendo JSON. Guarda X-Request-Id para soporte.

Idempotencia

Idempotency-Key identifica la operación: 16–128 letras ASCII, dígitos o . _ : -. Para una nueva imagen usa un ID único nuevo; al reintentar conserva ID, bytes originales y MIME. El ámbito es la cuenta, incluso al cambiar de clave API. Durante 24 horas desde la aceptación, las operaciones terminadas devuelven request_id, resultado y cargo originales con Idempotency-Replayed: true, sin generar ni cobrar otra vez.

Usa un Idempotency-Key distinto para cada operación o endpoint nuevo. Compartirlo entre texto y tablas devuelve 409 idempotency_conflict. Para cambiar el formato de una misma operación, reutiliza la clave y la imagen originales.

Estrategia de reintento

Ante errores de red, request_in_progress o settlement_pending, conserva ID e imagen, espera Retry-After segundos y reintenta. No crees otra operación con liquidación incierta. Los fallos finales guardados repiten el error; usa otro ID solo tras confirmar el fallo y querer empezar de nuevo. Pasadas 24 horas el ID puede iniciar otra operación cobrada; una recuperación pendiente sigue bloqueando su reutilización.

Seguridad de la facturación

Un fallo confirmado de reconocimiento no se cobra. Sin embargo, una respuesta perdida o settlement_pending puede indicar que ya se liquidó el cargo o que sigue habiendo una reserva. No inicies otra operación con un Idempotency-Key nuevo si el resultado sigue incierto; conserva el ID y la imagen, y guarda X-Request-Id para soporte.