n8n-nodes-baileys-instance
v0.1.9
Published
n8n community node for the wa-instance API built on top of Baileys 7.
Maintainers
Readme
n8n-nodes-baileys-instance
Community node de n8n para consumir una instancia wa-instance basada en Baileys 7 con una UI guiada, operativa y preparada para agentes.
Qué incluye
- Recurso
Instancepara health, status, pairing, logout, colas y webhook test - Recurso
History Syncpara estado y fetch on-demand - Recurso
Eventpara inspección de eventos persistidos - Recurso
Chatpara snapshots, archive, mute y read state - Recurso
Contactpara snapshots persistidos - Recurso
Grouppara snapshots y gestión operativa real - Recurso
Messagepara texto, media, previews y operaciones avanzadas - Recurso
Batchpara envíos y previews batch - Recurso
Consentpara alta, revocación y consulta - Recurso
Recipientpara límites operativos por JID - Recurso
Privacypara settings, blocklist y updates de visibilidad - Recurso
Webhook Deliverypara inspección y retry - Recurso
Custom API Requestcomo escape hatch usableAsTool: truepara reutilizar el nodo como tool dentro de flujos/agentes de n8n- Nodo
Baileys Triggerpara polling de eventos persistidos en/events
Requisitos
- n8n self-hosted con soporte para community nodes
- una instancia
wa-instanceaccesible por HTTP/HTTPS - API key válida del backend
Credenciales
El credential Baileys Instance API pide:
Base URLAPI KeyTimeout (ms)Allow Self-Signed TLS Certificates
Timeout (ms) es el primer mitigador cuando Send Text o Send Media fallan con aborts o timeouts. Si el backend encola, resuelve destinatarios o atraviesa un proxy con latencia, súbelo antes de asumir que la API está caída.
La comprobación de credenciales usa GET /status.
Notas importantes sobre onboarding y readiness:
- una instancia con API key válida puede responder bien a
GET /statusaunque todavía no esté pairada GET /health/depssigue disponible como check operativo estricto- mientras WhatsApp no tenga
connection: open,GET /health/depspuede devolver503sin que eso signifique credenciales inválidas - para distinguir entre onboarding pendiente y readiness estricta, usa
Get Statusjunto conGet Pairing QRoRequest Pairing Code - un
credential test = OKsolo confirma reachability y autenticación básica del backend; no garantiza que la sesión esté lista para enviar mensajes
Recursos y operaciones
Instance
- Get Health
- Get Dependencies Health
- Get Status
- Get Queue Status
- Get Pairing QR
- Request Pairing Code
- Logout Session
- Send Webhook Test
History Sync
- Get Status
- Fetch
Event
- Get Many
- Get
Chat
- Get Many
- Get Recent Messages
- Archive
- Mute
- Set Read State
Contact
- Get Many
Group
- Get Many
- Get
- Create
- Join
- Update Subject
- Update Description
- Update Participants
- Update Participant Requests
- Get Invite Code
- Revoke Invite Code
- Update Settings
- Update Ephemeral
Message
- Send Text
- Send Media
- Preview Send
- Get
- Get Many
- Get Inbound Message
- Reply
- Forward
- Delete
- Edit
- React
- Mark Read
- Send Receipts
- Refresh Media
Message -> Get Many
- Usa
GET /sendspara auditoría outbound. - Mantiene los filtros existentes:
status,to_jid,client_ref,from,to,limit. - Añade soporte para los filtros nuevos:
to_phone,text_contains,cursor. Limitahora admite hasta1000.- La salida del nodo conserva el comportamiento histórico: devuelve el JSON completo del backend en un único item, incluyendo
items,count,has_moreynext_cursorcuando estén presentes.
Batch
- Send Text Batch
- Send Media Batch
- Preview Batch
- Get
Consent
- Upsert
- Revoke
- Get
Recipient
- Get Limits
Privacy
- Get Settings
- Get Blocklist
- Update Block Status
- Update Last Seen
- Update Online
- Update Profile Photo
- Update Status
- Update Groups Add
- Update Read Receipts
- Update Default Disappearing Mode
Webhook Delivery
- Get Many
- Retry
Custom API Request
- Execute
Notas de uso
- Los endpoints de envío añaden
X-Idempotency-Keyautomáticamente si no se informa una clave manual. Send Text,Send Media,Send Text BatchySend Media Batchpueden ejecutar unPreflight Readiness Checkopcional antes del envío. Está desactivado por defecto para mantener compatibilidad.- El modo
Dependencies Healthdel preflight es el check más estricto. El modoStatusintenta bloquear envíos cuando el payload de/statusindica pairing pendiente o socket no abierto. Preview SendyPreview Batchvalidan policy, normalización y destinatario antes de enviar, y no envíanX-Idempotency-Key.Custom API Requestreutiliza el mismo host y autenticación del credential, sin permitir cambiar de servidor.- Algunas operaciones pueden devolver
409cuando la capacidad no está disponible en el estado actual del socket/backend. - Para tareas habituales usa los recursos modelados;
Custom API Requestqueda como escape hatch para endpoints nuevos o no modelados.
Chat snapshots y mensajes recientes
Chat -> Get Many
- Usa
GET /chats. - El filtro
Limitahora admite hasta1000, alineado con el backend actual. - Ejemplo: usa
Limit = 500para recuperar un lote grande de snapshots persistidos.
Chat -> Get Recent Messages
- Usa
GET /chats/:jid/messages. - Parámetros:
Chat JIDobligatorioLimitopcional, por defecto10, mínimo1, máximo100
- La salida principal del nodo devuelve directamente el array
itemsde la respuesta del backend, para que cada mensaje quede disponible como item de n8n. - Ejemplo:
Chat JID = [email protected]yLimit = 20para traer los 20 mensajes persistidos más recientes de ese chat.
Runbook de diagnóstico para ECONNABORTED
Cuando Message -> Send Text o Send Media fallen con ECONNABORTED, ETIMEDOUT o cierres de socket:
- Ejecuta
Instance -> Get Status. - Ejecuta
Instance -> Get Dependencies Health. - Ejecuta
Instance -> Get Queue Status. - Reproduce el envío con
Custom API RequestusandoPOST /send/textoPOST /send/mediapara aislar si el corte ocurre fuera de la UI modelada.
Interpretación rápida:
- Si
Get Statusresponde peroGet Dependencies Healthdevuelve503, la instancia está autenticada pero no lista para enviar todavía. - Si ambos responden bien y
/send/textsigue abortando, revisa logs dewa-instance, timeout del proxy reverso y salud de colas internas. - Si subir
Timeout (ms)evita el fallo, el problema era latencia o tiempo de proceso y no autenticación.
Trigger y webhooks
El paquete incluye Baileys Trigger en modo polling sobre /events.
Esto significa:
- el trigger integrado sirve para consumir eventos persistidos desde el backend mediante polling
- no registra ni gestiona webhooks dinámicos en
wa-instance - no sustituye la ingesta realtime vía webhook del backend
Para eventos inbound realtime, la vía recomendada es:
- configurar
WEBHOOK_URLenwa-instance - recibir los eventos con el nodo nativo
Webhookde n8n - enrutar por
event_type,instance_ido reglas de negocio dentro del workflow
Documentación relacionada:
Desarrollo local
npm install
npm run build
npm run devPublicación en npm
Este paquete está preparado para publicarse como paquete público de npm y seguir el flujo recomendado por n8n con GitHub Actions + provenance.
Flujo recomendado
- Configura el Trusted Publisher del paquete en npm para este repositorio y el workflow
publish.yml. - Haz un release con:
npm run release- El tag
v*disparará GitHub Actions y publicará el paquete en npm.
Publicación manual
npm login
npm publish --access publicPara verificación en n8n, la publicación recomendada es desde GitHub Actions con provenance.
