Webhook e WebSocket compartilham o mesmo envelope e o mesmo catálogo de eventos. A única diferença é o canal de entrega, oDocumentation Index
Fetch the complete documentation index at: https://docs.ryzeapi.cloud/llms.txt
Use this file to discover all available pages before exploring further.
data é idêntico.
Esta página documenta os 6 tipos: message.exchange, message.status, call.update, group.flow, instance.state e label.update.
Envelope
event no campo events da config. Vazio = todos os tipos.
Filtragem e roteamento
byEvents=true (apenas em webhook), o nome do evento é anexado à URL:
- Config:
url: "https://app/wh",byEvents: true - Delivery:
POST https://app/wh/message.exchange
message.exchange
Mensagens enviadas e recebidas (texto, mídia, sticker, documento, áudio, enquete, contato, localização, etc.), edits e revogações.
Payload
Campos condicionais
Apenas os campos relevantes para o tipo da mensagem são preenchidos. Edits têmedit populado; revogações chegam com type: "message_revoke" em data.message.type.
chat.isCommunity aparece apenas quando true, indica que o chat é o canal de aviso (parent / announcement channel) de uma comunidade WhatsApp. Subgrupos vinculados a uma comunidade continuam com type: "group" e sem o campo isCommunity. Em grupos comuns e DMs o campo também é omitido.Exemplo (recebimento de imagem)
message.status
Recibos de entrega: delivered, read, played, etc.
Payload
Enum status
| Valor | Significado |
|---|---|
delivered | Mensagem chegou no device do destinatário. |
read | Destinatário leu (read receipts ativos). |
played | Áudio/voice note foi reproduzido. |
sender | Eco interno (a própria origem reportando entrega). |
read_self | O próprio usuário marcou como lido em outro device. |
played_self | O próprio usuário reproduziu em outro device. |
retry | Servidor pediu reentrega (transient). |
inactive | Destinatário offline há tempo demais. |
server_error | Erro genérico do servidor WhatsApp. |
messageSenderem grupos: JID do autor original da mensagem (relevante quando alguém leu uma mensagem de outro participante).chat.isCommunitysegue a mesma regra demessage.exchange: presente etrueapenas quando o chat é o canal de aviso de comunidade.
call.update
Eventos de chamada: oferta, aceite, recusa, encerramento, latência.
Payload
Enum type
| Valor | Quando dispara |
|---|---|
offer | Chamada recebida/enviada (toque inicial). |
accepted | Lado remoto atendeu. |
rejected | Lado remoto rejeitou. |
terminated | Chamada encerrada, duration em segundos vem populado. |
notification | Notificação contextual de chamada (ex.: chamada perdida em grupo). |
latency | Métrica de latência durante a chamada (latency em ms, latencyStatus). |
group.flow
Mudanças em grupos: membros, metadata, settings.
Payload, participant change
Subtipos de metadata
type | Significado |
|---|---|
name | Nome do grupo alterado |
topic | Descrição alterada |
locked / unlocked | Members can/cannot edit info |
announce / not_announce | Members can/cannot send messages |
ephemeral / not_ephemeral | Mensagens efêmeras on/off |
invite | Invite link gerado |
link / unlink | Subgrupo vinculado/desvinculado de comunidade |
delete | Grupo deletado |
membership_approval | Modo de aprovação de novos membros alterado |
suspended / unsuspended | Grupo suspenso/reativado pelo WhatsApp |
instance.state
Mudanças no estado da própria instância (conexão, QR, ban, pareamento).
Payload
Enum state
| State | Significado | Campos extras populados |
|---|---|---|
connected | Sessão ativa, pronta para enviar/receber. | — |
disconnected | Desconectado (transient, geralmente reconecta sozinho). | — |
logged_out | Sessão invalidada (precisa novo connect). | reason |
stream_replaced | Outra sessão tomou o lugar (multi-device conflict). | — |
temp_banned | Ban temporário aplicado pelo WhatsApp. | expireAt, expireInSeconds, reason |
client_outdated | Versão do WhatsApp Web em uso está obsoleta, entre em contato com o suporte. | message |
connect_failure | Falha durante conexão. | reason, reasonCode |
stream_error | Erro de stream do WhatsApp. | errorMsg |
cat_refresh_error | Falha ao renovar credenciais (cat). | errorMsg |
qr_ready | Novo QR disponível para pareamento. | codes[], onConnect |
pair_success | Pareamento concluído. | jid, platform |
pair_error | Erro durante o pareamento. | errorMsg |
qr_scanned_no_multidevice | QR escaneado mas o device-alvo não tem multidevice. | — |
keepalive_timeout | Conexão instável, keepalive não respondido. | — |
keepalive_restored | Conexão estabilizou após keepalive_timeout. | — |
manual_reconnect | Reconexão disparada manualmente via REST. | — |
label.update
Edição/associação de etiquetas (WhatsApp Business labels).
Payload
Combinações type × action
type | action válida | Campos extras |
|---|---|---|
edit | updated, deleted | name, color, labelType, isActive, isImmutable, orderIndex, deleted |
chat | add, remove | chatJid, labeled |
message | add, remove | chatJid, messageId |
Eventos não emitidos (internos)
Capturados pelo handlerwhatsmeow mas não propagados via webhook/WS:
*events.Picture, mudança de foto de perfil (apenas logado).*events.FBMessage, Facebook Business (apenas logado).*events.HistorySync, sync de histórico (processado e gravado em DB).
Referências
Configurar webhook
Filtre os eventos via
events[] na config.Configurar WebSocket
Mesma sintaxe de filtro do webhook.
Conectar via WebSocket
Receba os eventos em tempo real.
Visão geral de Eventos
Comparação webhook x WebSocket.