Ir al contenido

Códigos de error

Cada error que el backend de Boost devuelve o registra a propósito lleva un código estable: un nombre corto como CONTACT_INACTIVE o agenda_seller_missing que no cambia aunque cambie el texto del mensaje. Con el código se encuentra aquí qué significa, la causa típica, cómo detectarlo y qué hacer.

Esta sección no se escribe a mano: sale del catálogo de errores del backend, que se arma leyendo el código, y se copia aquí con una sincronización (ver cómo se mantiene). Cada código tiene su ficha dentro de la página de su familia.

849 códigos. Escribe para buscar.

    • Respeta mayúsculas. ROLE_NOT_FOUND y role_not_found son dos códigos distintos, de familias distintas.
    • Enlace directo. Cada ficha tiene un ancla con el código exacto: la página de su familia seguida de #CODIGO (por ejemplo, /codigos-de-error/cartera/#CONTACT_INACTIVE). Ese enlace es estable: sirve para un ticket o una revisión de código.
    • Buscador del sitio. El de arriba a la derecha (Ctrl + K, o ⌘ + K) también encuentra los códigos y lleva a su ficha. Cada página de familia, además, tiene su propio filtro.
    • En la respuesta HTTP del backend: el campo code del cuerpo. Si la petición pasó por la web (el BFF), el código sube como code y el cuerpo original queda completo en details; algunas rutas del BFF solo lo dejan en details.code. En el navegador: herramientas de desarrollo → Red → la petición que falló → Respuesta.
    • En los registros del servidor: líneas escritas a propósito con code=…, cause=… o reason=… (cada familia dice cuál buscar).
    • En una tabla: el código de error de un mensaje fallido, la causa en el registro de una ejecución de workflow o la decisión del webhook de pagos.

    El backend responde el cuerpo que armó la excepción, tal cual. Hay cuatro formas:

    Forma Cuerpo Cuándo
    Con código { code, message, …datos } La mayoría de los errores de negocio: el code está en el catálogo y message es un texto en español para la persona.
    Operación { code, message, recoverable, retryable, errors: [{ field, code, message, line_index, … }], side_effects } Cotizaciones, órdenes y oportunidades. errors[] trae un renglón por campo o línea con problema; side_effects dice qué ya se hizo en Zauru, así que no se repite a ciegas.
    Envío por canal { code, message, reason_code, retry_after_seconds, retry_at, … } Envíos por WhatsApp, Messenger, Instagram o correo. reason_code es la clase del fallo; retry_after_seconds es el que dio Meta, o null: Boost no inventa esperas.
    Sin código { statusCode, message, error } Una excepción que solo lleva texto, o un error 500 no atrapado. No está en el catálogo.

    Un ejemplo de la primera forma, con status 409:

    {
    "code": "CONTACT_INACTIVE",
    "message": "<texto en español para la persona>"
    }

    Y lo que recibe el navegador cuando la misma respuesta pasa por el BFF, con el mismo status:

    {
    "error": "boost_api_error",
    "code": "CONTACT_INACTIVE",
    "message": "<el mismo texto>",
    "details": { "code": "CONTACT_INACTIVE", "message": "<el mismo texto>" }
    }

    La pantalla casi nunca muestra el código: traduce algunos a un texto propio (envío del chat, cotizaciones y órdenes, catálogo, inicio de sesión) y, si no lo conoce, muestra el message del backend o un texto genérico. Para reportar un error de pantalla, lo útil es el código y la hora.

    Un código puede aparecer de más de una forma; su ficha dice cuál.

    Tipo Qué es
    HTTP El code del cuerpo de una respuesta de error.
    detalle Viene dentro de una respuesta: un renglón de errors[] o el code de un resultado que no es excepción ({ ok: false, code }).
    interno Un error tipado con código estable dentro del backend. Quien lo atrapa lo traduce a una respuesta, o termina en un registro o en una tabla.
    workflow La causa de un fallo al ejecutar un workflow: queda en el registro de la ejecución.
    alarma Una alarma del vigía de canales, que revisa cada pocos minutos la recepción y el envío de mensajes. Trae severidad.
    sesión El veredicto de la revisión de sesión: el que no deja pasar responde 401.
    motivo El reason_code de un envío por canal: la clase del fallo, junto al code concreto.
    pago La decisión del webhook de pagos sobre un aviso de pago.
    Meta Un código numérico de la Graph API de Meta que Boost reconoce y explica.
    Estado Qué quiere decir
    vigente El backend lo puede devolver hoy.
    por retirar Todavía existe, pero va a desaparecer junto con el camino que lo produce. No se usa en código nuevo. Aparece al final de su familia, atenuado.
    retirado El backend ya no lo devuelve. Se conserva, con su fecha, para reconocerlo en registros viejos. Están juntos en Retirados.

    Cada familia agrupa los códigos de un área y trae cómo se detectan y qué hacer en general; un código hereda de su familia lo que su ficha no dice.

    FamiliaCódigosPor retirar
    Errores de Meta (Graph API)21—
    Alarmas del vigía de canales13—
    Veredictos de sesión8—
    Motivos de envío (reason_code)13—
    Decisiones del webhook de pagos12—
    Workflows: causas de fallo al ejecutar58—
    Acceso: login, sesión y entidad30—
    Roles, permisos y autorización65—
    Bóveda de credenciales de canal27—
    Zauru (sesión, GraphQL, app)13—
    Canales: envío directo a Meta y SES782
    Canales: alta de WhatsApp, páginas e Instagram21—
    Correo (SES): buzones, recepción y envío39—
    Canales: media entrante y enlaces estables11—
    Canales: comentarios de Facebook e Instagram21—
    Canales: ingreso de Meta (receptor, normalizador, bus)2—
    Canales: interruptores por cuenta y camino heredado1711
    Canales: costo, operación y anuncios2—
    Interacciones: chat, bandeja y plantillas43—
    Workflows: guardar, validar y activar46—
    Cotizaciones47—
    Órdenes40—
    Oportunidades (kanban)20—
    Pagos y links de pago13—
    Importador de entidades (Excel)71—
    Alta de entidades y usuarios iniciales18—
    Cartera: grupos, leads y contactos13—
    Integraciones de servidor4—
    Registro de errores HTTP (error_events)3—
    Plataforma: notificaciones, tickets, media y otros11—
    Reportes IA: motor interno de Boost6—
    Reportes IA (beta)20—
    Retirados43—
    Total84913

    793 vigentes, 13 por retirar y 43 retirados.

    Algunos códigos se componen en tiempo de ejecución, así que el catálogo los lista como patrón y no uno por uno:

    • CHANNEL_SEND_META_*
    • HTTP_*
    • MEDIA_DOWNLOAD_*
    • MEDIA_LOOKUP_*

    Los de Meta más frecuentes sí tienen ficha propia en Errores de Meta.

    • No trae código: es un error de la cuarta forma ({ statusCode, message, error }). Se busca por el texto del mensaje y la ruta en los registros del servidor.
    • Es nuevo: alguien lo agregó al backend y todavía no llegó aquí. El chequeo del catálogo de errores del backend falla mientras un código no esté documentado, así que basta con sincronizar.

    La fuente es el catálogo de errores de BoostAPI: lo que significa cada código se escribe allá, junto al código, y el resto se lee del código mismo. Esta documentación guarda una copia pública de ese catálogo (sin rutas de API, historia interna ni datos de clientes) y la actualiza con npm run errores:sync. El paso a paso está en Mantener esta documentación.

    Copia actual: 849 códigos en 33 familias, del catálogo del 2026-10-21 (BoostAPI 16cf19ff).