Guia · Arquitetura

REST API, Webhooks e WebSockets: quando usar cada um

A pergunta certa não é "qual é melhor" — é "que dado eu preciso e quem inicia a comunicação". Com essa lógica, a escolha deixa de ser discussão de arquitetos e vira aritmética.

2026-09-14·8 min de leitura·Guía

As três setas

Os três mecanismos se diferenciam por uma única variável: quem inicia a comunicação.

Todo o resto — latência, complexidade, escalonamento — é consequência dessa diferença. Agora sim, caso por caso.

REST: para consultar, gerenciar e conciliar

REST é o mecanismo natural para tudo o que não depende de algo acontecer no momento: relatórios de ponto por intervalo de datas, auditoria de acessos, gestão de usuários e credenciais, estado dos terminais. É fácil de depurar (um curl e pronto), tolerante a falhas (você tenta de novo e segue) e não exige nada especial na sua infraestrutura.

Na API Connect, a API REST é também a fonte da verdade: mesmo que você consuma eventos em tempo real, sua conciliação de folha de pagamento e seus relatórios oficiais devem se apoiar nos relatórios REST com paginação — assim você não depende de um mecanismo ao vivo não ter falhado num instante.

Webhooks: para reagir ao que acontece

Quando a lógica do seu SaaS precisa agir no momento — notificar a portaria, marcar o ponto ao vivo, disparar um alerta por acesso fora do horário — consultar em loop é desperdício de chamadas de API e latência desnecessária. O webhook inverte a seta: a plataforma faz POST do evento na URL que você configura.

A API Connect permite configurar a URL do webhook (com token opcional para autenticar a entrega) e envia um POST JSON para 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
});

Três regras de ouro para webhooks: responda 2xx rápido e processe de forma assíncrona; trate o payload como informação a validar (não confie em nada sem verificar); e lembre-se de que seu endpoint é público — autentique cada entrega com o token configurado.

WebSockets: para UI ao vivo, não para o seu backend

O websocket brilha num caso muito específico: interface de usuário que precisa de streaming de alta frequência — um painel de acessos ao vivo que atualiza ao mesmo tempo em 50 telas. O canal persistente evita o custo de abrir conexões por mensagem e permite enviar a todos os assinantes de uma vez.

Mas cuidado com a armadilha clássica: manter uma conexão WebSocket por usuário é uma responsabilidade operacional séria (reconexões, balanceamento, fan-out). Em integrações de hardware, o padrão saudável é: o webhook ou stream chega ao seu backend, e seu backend decide como enviá-lo aos navegadores com seu próprio mecanismo de tempo real (que muitos SaaS já têm).

A tabela de decisão

O que você precisaMecanismoNa API Connect
Relatórios de ponto, auditoria, conciliaçãoRESTRelatórios por serial com intervalo de datas e paginação
Gerenciar usuários, credenciais, terminaisRESTEndpoints por número de série
Notificar/alertar no momento do eventoWebhookURL + token configuráveis; POST JSON por evento
Disparar fluxos de negócio (cron, fechamentos, alertas)WebhookO evento chega sem você consultar
Painel ao vivo para seus usuáriosWebhook → seu tempo realSeu backend recebe e distribui para suas UIs
Backend que já consome pub/subStreamAssinatura por canal do terminal (punch_{SERIAL})

A arquitetura recomendada em uma frase

Webhook para o urgente, REST para a verdade, e seu próprio tempo real para as telas. Com essa combinação, um acesso concedido às 14:30:25 gera o alerta em segundos (webhook), a folha de pagamento do fim do mês concilia com o relatório oficial (REST) e o painel do supervisor se preenche ao vivo (seu canal de distribuição).

Perguntas frequentes

O que uso para mostrar marcações ao vivo?

Receba o evento via webhook no seu backend e envie-o aos seus usuários pelo seu próprio canal. A distribuição para navegadores faz parte do seu produto, não da API.

Preciso dos três ao mesmo tempo?

A combinação típica usa duas: webhook para reagir e REST para conciliar. WebSocket direto apenas se sua UI exigir streaming próprio de alta frequência.

E se meu servidor não responder a um webhook?

A API Connect registra a entrega falha e o evento fica disponível nos relatórios REST. A conciliação não perde registros mesmo que uma entrega falhe.

Teste os dois mecanismos hoje

Configure seu webhook, consuma os relatórios REST e valide o fluxo completo com o sandbox. 14 dias grátis, sem cartão.