Eventos de Mensagem

Enviados para messagesUrl.

Todos os eventos de mensagem são disparados tanto para mensagens recebidas quanto para mensagens enviadas pelo app do WhatsApp no dispositivo conectado. Use o campo data.isFromMe para distinguir: true indica que a mensagem foi enviada pelo próprio dispositivo, false indica que foi recebida de outro contato.


message — Mensagem de texto

Disparado quando uma mensagem de texto simples, com citação ou encaminhada é recebida.

{
  "type": "message",
  "data": {
    "deviceId": "meu-device-token",
    "messageTimestamp": 1714500000,
    "isFromMe": false,
    "quotedMessageId": "ABC123",
    "message": {
      "id": "MSG_ID_001",
      "conversation": "Olá, tudo bem?",
      "isForward": false
    },
    "contact": {
      "phone": "5511999990000",
      "name": "João Silva",
      "senderJid": "[email protected]",
      "senderLid": null
    }
  }
}
CampoTipoDescrição
data.deviceIdstringToken do dispositivo que recebeu a mensagem
data.messageTimestampnumberTimestamp Unix em segundos
data.isFromMebooleantrue se a mensagem foi enviada pelo próprio dispositivo via app do WhatsApp; false se foi recebida de outro contato
data.quotedMessageIdstring | nullID da mensagem citada, se houver
data.message.idstringID da mensagem no WhatsApp
data.message.conversationstringTexto da mensagem
data.message.isForwardboolean | nulltrue se a mensagem foi encaminhada
data.contact.phonestring | nullNúmero do remetente (somente dígitos)
data.contact.namestring | nullNome exibido do remetente (push name)
data.contact.senderJidstring | nullJID do remetente no WhatsApp
data.contact.senderLidstring | nullLID do remetente (dispositivos vinculados)

message.edit — Mensagem editada

Disparado quando o remetente edita uma mensagem já enviada.

{
  "type": "message.edit",
  "data": {
    "deviceId": "meu-device-token",
    "messageTimestamp": 1714500060,
    "isFromMe": false,
    "message": {
      "id": "MSG_ID_001",
      "conversation": "Olá, tudo bem? (editado)"
    },
    "contact": {
      "phone": "5511999990000",
      "name": "João Silva",
      "senderJid": "[email protected]"
    }
  }
}
CampoTipoDescrição
data.message.idstringID da mensagem original que foi editada
data.message.conversationstringNovo conteúdo de texto após a edição

message.revoke — Mensagem apagada

Disparado quando o remetente apaga uma mensagem para todos.

{
  "type": "message.revoke",
  "data": {
    "deviceId": "meu-device-token",
    "messageTimestamp": 1714500120,
    "isFromMe": false,
    "message": {
      "id": "MSG_ID_001"
    },
    "contact": {
      "phone": "5511999990000",
      "name": "João Silva",
      "senderJid": "[email protected]"
    }
  }
}
CampoTipoDescrição
data.message.idstringID da mensagem que foi apagada

message.reaction — Reação

Disparado quando uma reação (emoji) é adicionada ou removida de uma mensagem.

{
  "type": "message.reaction",
  "data": {
    "deviceId": "meu-device-token",
    "messageTimestamp": 1714500180,
    "isFromMe": false,
    "message": {
      "id": "MSG_ID_001",
      "reaction": "👍"
    },
    "contact": {
      "phone": "5511999990000",
      "name": "João Silva",
      "senderJid": "[email protected]"
    }
  }
}
CampoTipoDescrição
data.message.idstringID da mensagem que recebeu a reação
data.message.reactionstringEmoji da reação. String vazia indica remoção da reação.

message.contact — Contato compartilhado

Disparado quando um cartão de contato (vCard) é compartilhado.

{
  "type": "message.contact",
  "data": {
    "deviceId": "meu-device-token",
    "messageTimestamp": 1714500240,
    "isFromMe": false,
    "message": {
      "id": "MSG_ID_002",
      "sharedContact": {
        "displayName": "Maria Souza",
        "vcard": "BEGIN:VCARD\nVERSION:3.0\nFN:Maria Souza\nTEL:+5511988880000\nEND:VCARD"
      }
    },
    "contact": {
      "phone": "5511999990000",
      "name": "João Silva",
      "senderJid": "[email protected]"
    }
  }
}
CampoTipoDescrição
data.message.sharedContact.displayNamestringNome do contato compartilhado
data.message.sharedContact.vcardstringDados completos do contato no formato vCard

message.location — Localização

Disparado quando uma localização geográfica é compartilhada.

{
  "type": "message.location",
  "data": {
    "deviceId": "meu-device-token",
    "messageTimestamp": 1714500300,
    "isFromMe": false,
    "message": {
      "id": "MSG_ID_003",
      "location": {
        "latitude": -23.5505,
        "longitude": -46.6333
      }
    },
    "contact": {
      "phone": "5511999990000",
      "name": "João Silva",
      "senderJid": "[email protected]"
    }
  }
}
CampoTipoDescrição
data.message.location.latitudenumberLatitude em graus decimais
data.message.location.longitudenumberLongitude em graus decimais

message.file — Arquivo / Mídia

Disparado quando uma imagem, vídeo, áudio ou documento é recebido. O conteúdo do arquivo é codificado em base64.

{
  "type": "message.file",
  "data": {
    "deviceId": "meu-device-token",
    "messageTimestamp": 1714500360,
    "isFromMe": false,
    "message": {
      "id": "MSG_ID_004",
      "attachment": {
        "mimetype": "image/jpeg",
        "fileName": "foto.jpg",
        "caption": "Olha isso!",
        "base64": "/9j/4AAQSkZJRgAB..."
      }
    },
    "contact": {
      "phone": "5511999990000",
      "name": "João Silva",
      "senderJid": "[email protected]"
    }
  }
}
CampoTipoDescrição
data.message.attachment.mimetypestringTipo MIME do arquivo (ex: image/jpeg, video/mp4, audio/ogg, application/pdf)
data.message.attachment.fileNamestring | nullNome original do arquivo
data.message.attachment.captionstring | nullLegenda enviada junto ao arquivo
data.message.attachment.base64stringConteúdo do arquivo codificado em base64