Referência/Webhooks/send.message
Evento por instância

send.message

Mensagem enviada pela API apos envio e persistencia bem-sucedidos.

flag: sendMessage

Requisição

http
POST /webhooks/codechat HTTP/1.1
Content-Type: application/json
x-webhook-event: send.message

Payload

json
{
"data": {
"content": {
"text": "Mensagem enviada"
},
"device": "web",
"id": 2048,
"isGroup": false,
"keyFromMe": true,
"keyLid": null,
"keyParticipant": null,
"keyParticipantLid": null,
"keyRemoteJid": "[email protected]",
"messageTimestamp": 1783188000,
"messageType": "conversation",
"metadata": null,
"pushName": null
},
"event": "send.message",
"instance": {
"connectionStatus": "online",
"externalAttributes": {},
"id": 1,
"name": "codechat",
"ownerJid": "[email protected]"
},
"timestamp": "2026-07-04T18:00:00Z"
}
idnumber

obrigatório, não aceita `null`. ID interno da mensagem.

keyRemoteJidstring | null

obrigatório, aceita `null`. JID remoto da mensagem.

keyLidstring | null

obrigatório, aceita `null`. LID remoto da mensagem.

keyFromMeboolean

obrigatório, não aceita `null`. Indica se a mensagem foi enviada pela propria instancia.

keyParticipantstring | null

obrigatório, aceita `null`. Participante em mensagens de grupo.

keyParticipantLidstring | null

obrigatório, aceita `null`. LID do participante em mensagens de grupo.

pushNamestring | null

obrigatório, aceita `null`. Nome exibido do remetente quando conhecido.

messageTypestring

obrigatório, não aceita `null`. Tipo normalizado da mensagem.

contentobject

obrigatório, não aceita `null`. Conteudo normalizado da mensagem.

messageTimestampnumber

obrigatório, não aceita `null`. Timestamp Unix em segundos.

devicestring | null

obrigatório, aceita `null`. Dispositivo/origem inferida da mensagem.

isGroupboolean

obrigatório, não aceita `null`. Indica se a mensagem pertence a grupo.

metadataobject | null

obrigatório, aceita `null`. Metadados adicionais normalizados.

Observações de entrega

  • Usa o mesmo DTO de messages.upsert, mas a origem e o envio pela propria API.
  • Quando uma mensagem e aceita com options.mentionAll=true, o mesmo evento send.message tambem entrega o resultado definitivo do processamento assincrono. Nesse caso, data contem processId, status, mentionAll, externalAttributes e, em caso de sucesso, data.messageId, data.remoteJid, data.participantCount e data.timestamp. Em caso de falha, contem error.code e error.message.
  • Implemente idempotência por chave de negócio e aceite a possibilidade de duplicidades e reordenação.