Pular para o conteúdo

chat.presence

EVENTOchat.presencedesde M7envelope v1

Presença no chat.

Quando é emitido

Contato digitando (composing), gravando áudio (recording) ou parando (paused) num chat, e contatos assinados com POST /presence/subscribe ficando online/offline. Opt-in: só chega com presence.online ligado nas settings (o WhatsApp só manda presença para contas online, e com isso o celular para de mostrar notificações) e só para webhooks/streams que pedem o tipo pelo nome (chat.presence ou chat.*; * não inclui). Repetições do mesmo estado em menos de 5 segundos são descartadas.

Campos de data

CampoTipoDescrição
chatstringJID do chat (ou do contato, em online/offline).
senderstringQuem digita (o participante, em grupos).
is_groupbooleanChat de grupo (opcional).
statestringcomposing, recording, paused, online ou offline.
last_seenstringEm offline: visto por último, se o contato mostra (opcional).

O envelope (id, type, version, instance_id, timestamp,data) está em Visão geral. Campos novos podem ser adicionados emdata sem mudar a versão: ignore os que não conhecer.

Exemplos

Corpo do POST
{
"id": "evt_7e1b4d8a2c6f0935",
"type": "chat.presence",
"version": 1,
"instance_id": "inst_7f3a9c2e5b1d4086",
"timestamp": "2026-10-18T10:06:00.000Z",
"data": {
"chat": "[email protected]",
"sender": "[email protected]",
"state": "composing"
}
}

Entrega e ordem

  • Por webhook: pelo menos uma vez, com retry por até 24 horas. O mesmo evento pode chegar duas vezes: deduplique porX-LiteZap-Event-Id. Veja Entrega e retentativas.
  • A ordem entre eventos não é garantida (retentativas reordenam): use timestamp.
  • Por SSE: ao vivo, sem replay. Veja Tempo real com SSE.
  • Para assinar só este tipo: "events": ["chat.presence"] no webhook, ou?types=chat.presence no SSE.

Relacionados: message.received

Equivalente na Z-API: Status do chat.