Errores y límites

Cómo interpretar las respuestas de error de la API, qué significan los códigos por dominio y cómo manejar rate limits y reintentos.

Anatomía de un error

Todas las respuestas de error comparten la misma estructura. El campo code es un identificador estable con formato {dominio}_{número} que puedes usar para manejar cada caso de forma programática (no dependas del texto de message, que es legible pero puede cambiar).

{
  "success": false,
  "message": "API Key inválida o no existe.",
  "status": 401,
  "code": "auth_05"
}
CampoDescripción
successfalse en todo error.
messageDescripción legible en español.
statusCódigo HTTP de la respuesta.
codeCódigo estructurado {dominio}_{número}.
request_idUUID de seguimiento (presente en errores 500). Inclúyelo al contactar a soporte.

Códigos HTTP

HTTPSignificado¿Reintentar?
200Éxito.No aplica
400Error de validación o de lógica de negocio (parámetros, saldo, mensaje).No, corrige la petición.
401API Key ausente, inválida o cuenta deshabilitada.No, revisa tu llave.
403La IP no está en la lista blanca de tu cuenta.No, autoriza la IP en el panel.
429Se excedió el rate limit.Sí, con backoff.
500Error interno del servidor.Sí, con backoff; guarda el request_id.

Códigos por dominio

El prefijo del code indica el área de la API donde ocurrió el error:

DominioÁreaEjemplos
auth_Autenticación y accesoauth_04 (IP no autorizada, HTTP 403), auth_05 (API Key inválida, HTTP 401)
sms_Envío de SMSsms_02 (mensaje demasiado largo), sms_07 (créditos insuficientes), sms_402 (número no válido), sms_400 (parámetros inválidos), sms_11 (envío exitoso)
verification_Generación de OTP (/otp/send)verification_01 (código generado con éxito) y errores de generación
validation_Verificación de OTP (/otp/verify)código incorrecto, código expirado, o máximo de intentos por hora excedido
rate_Rate limitrate_01 (HTTP 429)
server_Error internoserver_01 (HTTP 500)
report_Reportesreport_400 (fechas inválidas), report_401 (sin resultados)
credit_Créditos y saldocredit_01
contact_Gestión de contactoserrores de alta y validación de contactos

Cada endpoint documenta en el API Reference los códigos exactos que puede devolver, con su descripción. Por ejemplo, revisa los errores de /sms/send o de /otp/verify.

Errores frecuentes de SMS

// Créditos insuficientes
{ "success": false, "message": "insufficient_credits", "code": "sms_07" }
 
// Mensaje excede el límite de caracteres
{ "success": false, "message": "message_too_long", "code": "sms_02" }

Antes de un envío grande, valida el saldo con /credits/consult para no fallar a mitad de la campaña con sms_07.

Rate limits

EntornoLímiteAl exceder
Producción100 mensajes/segundoHTTP 429, code: rate_01
Sandbox100 mensajes/díaHTTP 429, code: rate_01

Manejo de errores

1

Revisa success primero

Si success es false, no proceses la respuesta como éxito aunque el HTTP sea 200.

2

Ramifica por code, no por message

Usa el code estructurado (sms_07, auth_04, etc.) en tu lógica. El message es para logs y humanos.

3

Reintenta solo 429 y 500

Implementa reintentos con backoff exponencial únicamente en 429 y 500. Los 4xx restantes requieren corregir la petición.

4

Registra el request_id

En errores 500, guarda el request_id y compártelo con soporte para acelerar el diagnóstico.

Con esto puedes manejar cualquier respuesta de la API de forma robusta. Vuelve a la Guía rápida o explora el API Reference.