Ir al contenido

https://documentacion.onelyra.com/api/errores/ · Actualizado el 25 de octubre de 2026

Errores, reintentos y duplicados

Qué es
Cómo falla la API y cómo debe reaccionar quien la llama.
Para quién
Quien integra un sistema con ELYRA.
Dónde vive
En todas las llamadas de /api/integraciones/v1.

Cuando una llamada falla, la respuesta trae un código HTTP y un cuerpo con detail, que dice qué falló en palabras. Un envío de carta que responde un error (4xx) no envió nada.

{ "codigo": "cuando_falta", "detail": "Esta carta espera que le digan para cuándo: falta «cuando»." }
CampoQué es
codigoEstable. Es contra lo que se programa: un if codigo == "carta_sin_lista". No cambia en la versión.
detailQué pasó, en palabras, para leerse en un registro tal cual. Puede mejorar mañana. Con cuerpo_invalido es la lista de campos que no tienen la forma esperada.
cuenta, filas, avisosSolo en algunos errores de envío: la revisión fila a fila cuando ninguna puede salir, o a quién no se alcanzó.

Léalo así: el código dice qué, el detalle dice por qué esta vez.

CódigoHTTPQué significa
grant_no_soportado400Solo se acepta grant_type=client_credentials.
credencial_invalida401El client_id o el secreto no casan, o la credencial no vale.
no_autenticado401Falta la credencial, no vale, está revocada o caducó.
sin_permiso403La credencial vale, pero no abre esta familia.
no_encontrado404No existe en tu cliente. Lo de otro cliente responde igual.
demasiado_grande413El archivo pesa más de lo permitido.
archivo_inalcanzable422No se pudo traer archivo_url: tiene que ser https y alcanzable desde internet.
archivo_invalido422El archivo no se puede leer, o archivo.datos no es base64.
archivo_no_arranca422El archivo entero no puede salir: le faltan columnas, pasa un tope o no trae filas.
campo_desconocido422El envío trae un campo que no existe; detail dice cuáles acepta.
canal_desconocido422El canal de solo_por no existe.
carta_apagada422La carta está apagada.
carta_con_audiencia422La carta tiene su propia audiencia: no recibe lista.
carta_sin_capacidad422La carta no tiene capacidad: se borró la que decía qué contar.
carta_sin_lista422La carta espera la lista de quien la envía y no llegó.
cuando_falta422La carta espera que le digan para cuándo y no llegó cuando.
cuando_invalido422cuando no es una fecha ISO 8601 con su zona horaria.
cuando_no_aceptado422La carta decide su propio cuándo: no recibe cuando.
cuando_pasado422La fecha de cuando ya pasó.
cuerpo_invalido422El cuerpo no tiene la forma esperada: detail lista los campos.
datos_faltan422Falta un dato obligatorio del mensaje; detail dice cuál.
datos_invalidos422datos tiene que ser un objeto: nombre del dato → valor.
lista_duplicada422La lista llegó de más de una forma: para, archivo o archivo_url, solo una.
ninguna_fila_sale422Ninguna fila de la lista puede salir; detail trae cada una con su motivo.
no_valido422La llamada se entiende pero no se puede hacer así; detail dice por qué.
para_invalido422para tiene que ser una lista.
sin_destinatarios422No hay a quién escribirle.
demasiados_intentos429Demasiados intentos: espera los segundos de Retry-After.
fallo_interno500Un fallo de ELYRA. Reintenta más tarde.

Un error HTTP corriente que no tenga código propio sale con el genérico de su estado (no_encontrado para un 404, no_valido para un 422).

  • Sí: no_autenticado con un token (tras pedir otro), demasiados_intentos (tras esperar Retry-After), fallo_interno y los fallos de red o de tiempo de espera. Con una pausa que crece entre intentos (1 s, 2 s, 4 s…).
  • No: sin_permiso, no_encontrado, demasiado_grande y todos los 422. Repetir la misma llamada da el mismo error; hay que cambiar algo primero.

El caso peligroso es el tiempo de espera agotado: el sistema no sabe si ELYRA recibió el envío, reintenta, y la alerta llega dos veces. Para eso existe id_envio:

  • Se manda un identificador propio en cada envío de carta: el número del incidente, el de la factura, uno generado.
  • Si ELYRA ya tiene un envío con ese id_envio, no envía de nuevo: responde 200 con {"repetido": true, "envio": {…}}, el envío que ya existe.
  • Un envío que se canceló no cuenta: el mismo id_envio puede volver a usarse.

Léalo así: con id_envio, reintentar siempre es seguro.

  • Una persona a la que el canal no deja escribir (WhatsApp fuera de su ventana de 24 horas, alguien que pidió no recibir avisos) no hace fallar el envío: esa fila sale en la cuenta como «no salió» o «puede no salir», con su motivo, y las demás siguen.
  • Un aviso suelto (POST /avisos) vuelve siempre con su registro y su estado: un rechazo del canal es un estado con motivo, no un error HTTP.
QuéTope de fábrica
Destinatarios por envío de carta500
Tamaño de un archivo2 MB
Destinatarios al día, entre todos los envíos2.000
Direcciones en un aviso suelto100

Los tres primeros se cambian en Personas, en los ajustes de los lotes. Pasar un tope responde 422 diciendo cuál, y no se envía nada.

Relacionado: Referencia interactiva, con el error que puede devolver cada llamada.

Desliza la imagen para verla entera.