El módulo de Eventos es la forma de recibir lo que ocurre en tu instancia en tiempo real. RyzeAPI emite eventos a través de dos canales independientes que comparten el mismo envoltorio y el mismo catálogo:Documentation Index
Fetch the complete documentation index at: https://docs.ryzeapi.cloud/llms.txt
Use this file to discover all available pages before exploring further.
Webhook (HTTP push)
RyzeAPI hace
POST a tu URL cada vez que ocurre un evento. Persistido en una cola con retry/backoff y DLQ. Ideal para servidores, CRMs, automatizaciones.WebSocket (push en tiempo real)
El cliente abre una conexión y recibe los eventos al instante. Sin persistencia, ideal para dashboards, paneles en vivo, pantallas de soporte.
Endpoints del módulo
| Método | Ruta | Función |
|---|---|---|
POST | /api/events/webhook/:instance | Configurar webhook (hasta 3 habilitados) |
GET | /api/events/getWebhook/:instance | Listar webhooks u obtener uno por ?label= |
POST | /api/events/websocket/:instance | Configurar WebSocket ({"enabled": false} desactiva) |
GET | /api/events/getWebsocket/:instance | Leer la configuración actual del WebSocket |
GET | /ws/:instance | Conectar vía WebSocket (upgrade) |
La configuración de webhook y WebSocket también puede hacerse en la creación de la instancia, basta con enviar
webhookEnabled, webhookURL, websocketEnabled, etc. en el body de POST /api/instance/new.Envoltorio compartido
Tanto el webhook como el WebSocket entregan el mismo objeto:instanceData.token es el propio token de la instancia, útil cuando tu consumidor centraliza varias instancias y necesita identificar el origen.
Los 6 tipos de eventos
message.exchange
Mensajes enviados/recibidos (texto, media, sticker, doc, encuesta, contacto, ubicación, botón/lista, ediciones y revocaciones).
message.status
Acuses de entrega:
delivered, read, played, read_self, played_self, etc.call.update
Llamadas:
offer, accepted, rejected, terminated, notification, latency.group.flow
Cambios de grupo:
joined/left/promoted/demoted + metadatos (name, topic, announce, link, etc.).instance.state
Cambios de conexión de la instancia:
connected, qr_ready, temp_banned, logged_out, pair_success…label.update
Etiquetas de WhatsApp Business: ediciones, asociación con chats y mensajes.
Catálogo completo de eventos
Esquemas de payload, enums y ejemplos para cada uno de los 6 tipos.
Webhook vs WebSocket
| Aspecto | Webhook | WebSocket |
|---|---|---|
| Protocolo | HTTP POST | WS (TCP upgrade) |
| Entrega | Asíncrona, persistida en cola | Tiempo real, en memoria |
| Retry/DLQ | Backoff exponencial 1s→1h, hasta 5 intentos + DLQ | Sin retry, los eventos se pierden si el cliente está offline |
| Filtro de eventos | events[] por configuración | events[] por configuración |
| Media en base64 | mediaBase64 opcional | mediaBase64 opcional |
| Autenticación | Cabecera Authorization configurable | Token en el upgrade (cabecera o ?token=) |
| Heartbeat | N/A | PING/PONG ~54s/60s |
| Límite | Hasta 3 webhooks habilitados por instancia | 1 configuración por instancia (broadcast a N clientes conectados) |
| Backpressure | La cola crece en la BD | Buffer de 256 mensajes por cliente; los lentos se descartan |
| ¿Sobrevive a crash del consumidor? | Sí | No |
Múltiples webhooks por instancia
Cada instancia acepta hasta 3 webhooks habilitados simultáneamente, identificados por unlabel. Esto te permite, por ejemplo:
defaultpara el sistema principal de producciónanalytics-pipelinepara un sink de eventosstaging-mirrorpara validar cambios en paralelo
label tiene su propia URL, filtro de eventos, authorization y mediaBase64. Ver configurar webhook.
Buenas prácticas
Responde 2xx en menos de 5s en el endpoint del webhook, de lo contrario la entrega entra en retry con backoff exponencial.
Valida el origen con la cabecera
Authorization configurada, no hay HMAC automático, el consumidor es responsable.mediaBase64: false si solo necesitas la URL/s3Url, ahorra ancho de banda y espacio en BD.Reconecta con backoff en el WebSocket, no hay reanudación de sesión; los eventos perdidos no regresan.
Filtra
events[] cuando sepas exactamente lo que vas a consumir, reduciendo tráfico y procesamiento.Próximos pasos
Configurar webhook
POST /api/events/webhook/:instance, crea/actualiza por label.Listar webhooks
GET /api/events/getWebhook/:instance, todos o por ?label=.Configurar WebSocket
POST /api/events/websocket/:instance, enabled, events, mediaBase64.Consultar configuración del WebSocket
GET /api/events/getWebsocket/:instance.Catálogo de eventos
Esquemas y ejemplos de los 6 tipos.
Conectar vía WebSocket
GET /ws/:instance, protocolo, autenticación, reconexión.