Saltearse al contenido

Códigos de Error

En caso de error revisa el código HTTP y el campo message.

Los errores de negocio siempre devuelven un code legible por máquina para que pueda ramificar programáticamente. Los parámetros inválidos (validación) y las rutas desconocidas devuelven el formato estándar de Laravel: { “message”: ”…”, “errors”: { … } }. Valide las entradas antes de enviarlas.

{
"code": "insufficient_balance",
"message": "Insufficient balance. Please top up and try again."
}
codeHTTPDescripción
unauthorized401Falta la clave de API, no es válida o está inactiva.
account_banned403Cuenta suspendida. Contacte con soporte.
invalid_realtime_request400Solicitud en tiempo real malformada (p. ej., número sin prefijo internacional + cuando se omite country).
idempotency_key_required400Las solicitudes en tiempo real requieren el encabezado Idempotency-Key.
invalid_idempotency_key422Idempotency-Key inválido: 1-128 caracteres de letras, dígitos y . _ : -
idempotency_conflict409La misma Idempotency-Key se usó con un contenido de solicitud diferente.
request_in_progress409Una solicitud en tiempo real idéntica sigue procesándose. Reintente en breve (Retry-After: 1).
empty_input422El archivo subido no contiene filas utilizables.
product_not_found422El slug de producto enviado no existe o está inactivo.
product_mode_not_supported422Este endpoint no acepta este modo de producto (los productos en tiempo real no van a endpoints masivos).
invalid_country422El producto no admite el país enviado.
too_few_numbers422El envío está por debajo del mínimo del producto.
too_many_numbers422El envío supera el máximo de la plataforma.
insufficient_balance402Saldo insuficiente. Recargue y reintente.
realtime_disabled403La detección en tiempo real no está habilitada para esta cuenta.
realtime_rate_limited429Límite de solicitudes en tiempo real superado. Respete retry_after.
product_pricing_unavailable503El precio de este producto aún no está configurado. Contacte con soporte.
detection_capacity_unavailable503No hay capacidad de detección disponible ahora mismo. Reintente más tarde.
realtime_route_unavailable503No hay ruta en tiempo real disponible. Reintente más tarde.
realtime_fact_cache_unavailable503Una dependencia en tiempo real no está disponible temporalmente. Reintente más tarde.
realtime_rate_limiter_unavailable503El limitador de solicitudes no está disponible temporalmente. Reintente más tarde.
internal_error500Error interno del servidor. Es seguro reintentar con la misma Idempotency-Key.

No todos los fallos tienen un code. Los endpoints de tarea informan de cuatro condiciones solo con el estado HTTP y message, porque esos fallos se producen antes de llegar a la ruta de errores de negocio:

HTTPCondiciónCuerpo
404El task_id no existe o pertenece a otra cuentasolo message
404GET /v1/tasks/{token}/download: el archivo de resultados no está disponible, ha caducado o ya no se puede descargarsolo message
422GET /v1/tasks/{token}/result: el resultado no está listo; la tarea no ha terminado, el archivo no se ha generado o ha caducadosolo message
422Los parámetros de la solicitud no superaron la validación{ "message": …, "errors": { … } }

Para estos casos, ramifica según el estado HTTP. El message es para tus logs y para quien lee un incidente, no para el flujo de control.

La respuesta correcta ante un fallo depende de si repetir la solicitud podría producir un resultado diferente.

Un reintento sin cambios repite el mismo fallo.

unauthorized, account_banned, invalid_realtime_request, idempotency_key_required, invalid_idempotency_key, idempotency_conflict, empty_input, product_not_found, product_mode_not_supported, invalid_country, too_few_numbers, too_many_numbers, insufficient_balance, realtime_disabled, product_pricing_unavailable

Transitorio: la misma solicitud debería funcionar más tarde.

realtime_rate_limited, request_in_progress, detection_capacity_unavailable, realtime_route_unavailable, realtime_fact_cache_unavailable, realtime_rate_limiter_unavailable

Es posible que la solicitud se haya aplicado o no. Reintenta con la misma clave.

internal_error