Las tres flechas
Los tres mecanismos se diferencian por una sola variable: quién inicia la comunicación.
- REST API: inicias tú. Tu backend pide datos y recibe una respuesta. Pregunta → respuesta, y la conexión muere.
- Webhooks: inicia la plataforma. Cuando ocurre un evento, tu endpoint recibe un POST con los datos. No preguntas: te empujan.
- WebSockets: inicias una vez y el canal queda abierto. Ambas partes envían en cualquier momento, sin abrir conexión por mensaje.
Todo lo demás — latencia, complejidad, escalado — es consecuencia de esa diferencia. Ahora sí, caso por caso.
REST: para consultar, gestionar y conciliar
REST es el mecanismo natural para todo lo que no depende de que pase algo en el momento: reportes de asistencia por rango de fechas, auditoría de accesos, gestión de usuarios y credenciales, estado de terminales. Es fácil de debuggear (un curl y listo), tolerante a fallos (reintentas y sigues) y no requiere nada especial en tu infraestructura.
En API Connect, la API REST es además la fuente de verdad: aunque consumas eventos en tiempo real, tu conciliación de nómina y tus reportes oficiales deben apoyarse en los reportes REST con paginación — así no dependes de que un mecanismo en vivo no haya fallado un instante.
Webhooks: para reaccionar a lo que ocurre
Cuando la lógica de tu SaaS necesita actuar en el momento — notificar a la portería, marcar asistencia en vivo, disparar una alerta por acceso fuera de horario — consultar en bucle es un desperdicio de API calls y una latencia innecesaria. El webhook invierte la flecha: la plataforma POSTea el evento a la URL que configuras.
API Connect permite configurar la URL de webhook (con token opcional para autenticar la entrega) y envía un POST JSON por cada evento:
// Tu endpoint recibe el evento de la plataforma
app.post('/api-connect/eventos', (req, res) => {
// Verifica el token de entrega antes de procesar
if (req.headers.authorization !== `Bearer ${process.env.WEBHOOK_TOKEN}`) {
return res.sendStatus(403);
}
const evento = req.body;
// Ejemplo de payload de marcación:
// { "Event Type": "Punch", "Event Description": "Access granted – door opened",
// "Serial number": "SN...", "Pin": "1234", "Date": "2026-09-14", "Time": "14:30:25" }
console.log(evento["Pin"], evento["Date"], evento["Time"]);
res.sendStatus(200); // responde rápido; procesa después
});
Tres reglas de oro para webhooks: responde 2xx rápido y procesa asíncrono; trata el payload como información a validar (no confíes en nada sin verificar); y recuerda que tu endpoint es público — autentica cada entrega con el token configurado.
WebSockets: para UI en vivo, no para tu backend
El websocket brilla en un caso muy específico: interfaz de usuario que necesita streaming de alta frecuencia — un tablero de accesos en vivo que actualiza a la vez en 50 pantallas. El canal persistente evita el costo de abrir conexiones por mensaje y permite empujar a todos los suscriptores a la vez.
Pero ojo con la trampa clásica: mantener una conexión WebSocket por usuario es una responsabilidad operativa seria (reconexiones, balanceo, fan-out). En integraciones de hardware, el patrón sano es: webhook o stream llega a tu backend, y tu backend decide cómo empujarlo a los navegadores con su propio mecanismo de realtime (que ya muchos SaaS tienen).
La tabla de decisión
| Lo que necesitas | Mecanismo | En API Connect |
|---|---|---|
| Reportes de asistencia, auditoría, conciliación | REST | Reportes por serial con rango de fechas y paginación |
| Gestionar usuarios, credenciales, terminales | REST | Endpoints por número de serie |
| Notificar/alertar en el momento del evento | Webhook | URL + token configurables; POST JSON por evento |
| Disparar flujos de negocio (cron, cierres, alertas) | Webhook | El evento llega sin que consultes |
| Tablero en vivo para tus usuarios | Webhook → tu realtime | Tu backend recibe y distribuye a tus UIs |
| Backend que ya consume pub/sub | Stream | Suscripción por canal de terminal (punch_{SERIAL}) |
La arquitectura recomendada en una frase
Webhook para lo urgente, REST para la verdad, y tu propio realtime para las pantallas. Con esa combinación, un acceso otorgado a las 14:30:25 genera la alerta en segundos (webhook), la nómina del fin de mes concilia con el reporte oficial (REST) y el tablero del supervisor se llena en vivo (tu canal de distribución).
Preguntas frecuentes
¿Qué uso para mostrar marcaciones en vivo?
Recibe el evento vía webhook en tu backend y empújalo a tus usuarios con tu propio canal. La distribución a navegadores es parte de tu producto, no de la API.
¿Necesito las tres a la vez?
La combinación típica es dos: webhook para reaccionar y REST para conciliar. El websocket directo solo si tu UI exige streaming propio de alta frecuencia.
¿Y si mi servidor no responde a un webhook?
API Connect registra la entrega fallida y el evento queda disponible en los reportes REST. La conciliación no pierde registros aunque una entrega falle.
Prueba los dos mecanismos hoy
Configura tu webhook, consume los reportes REST y valida el flujo completo con el sandbox. 14 días gratis, sin tarjeta.