Referência da API
Integre o WhatsApp à sua aplicação em minutos. Nossa API segue os padrões RESTful, autenticação via Bearer Token ou API Key, e respostas em JSON.
https://api.whatsmiau.devAutenticação
Todas as requisições autenticadas usam API Key via header apikey. Gere suas chaves no Dashboard.
Verificar Credenciais
Teste se sua chave de API é válida fazendo uma requisição simples de listagem.
curl -X GET https://api.whatsmiau.dev/evolution/instances \
-H "apikey: SUA_CHAVE_AQUI"Instâncias
Gerencie suas sessões do WhatsApp. Cada instância representa um número de telefone conectado.
Criar Instância
Cria uma nova instância. Se 'qrcode' for true, ela já estará pronta para leitura.
Parâmetros
Nome único para identificar a instância.
Se verdadeiro, retorna o QR Code imediatamente (se suportado).
Token personalizado para a instância (opcional).
curl -X POST https://api.whatsmiau.dev/evolution/instance/create \
-H "apikey: SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"instanceName": "Marketing01",
"qrcode": true
}'Conectar Instância
Recupera o QR Code (base64) para conectar uma instância criada.
Parâmetros
ObjectID da instância (retornado em GET /evolution/instances).
curl -X GET https://api.whatsmiau.dev/evolution/instance/connect/64f1a2b3c4d5e6f7a8b9c0d1 \
-H "apikey: SUA_CHAVE"Deletar Instância
Remove permanentemente uma instância e limpa a sessão.
Parâmetros
ObjectID da instância (retornado em GET /evolution/instances).
curl -X DELETE https://api.whatsmiau.dev/evolution/instance/64f1a2b3c4d5e6f7a8b9c0d1 \
-H "apikey: SUA_CHAVE"Mensagens
Envie mensagens de texto, imagens, vídeos, áudios e documentos para qualquer número do WhatsApp.
Enviar Texto
Envia uma mensagem de texto simples. Suporta emojis.
Parâmetros
Número do destinatário com DDI e DDD (ex: 5511999998888).
O texto a ser enviado.
Atraso em milissegundos antes de enviar (máx: 300000).
Exibir preview de links.
Mencionar todos em grupos.
Lista de JIDs a mencionar.
Mensagem a ser respondida (key.id obrigatório).
curl -X POST https://api.whatsmiau.dev/message/sendText/Marketing01 \
-H "apikey: KEY" \
-H "Content-Type: application/json" \
-d '{
"number": "551199998888",
"text": "Olá! 👋",
"delay": 1200
}'Enviar Mídia
Envia imagens, vídeos ou documentos via URL pública.
Parâmetros
Número do destinatário.
"image", "video" ou "document".
URL pública do arquivo.
Legenda da mídia.
Nome do arquivo (para documentos).
MIME type do arquivo.
Atraso em milissegundos (máx: 300000).
Mensagem a ser respondida (key.id obrigatório).
Mencionar todos em grupos.
Lista de JIDs a mencionar.
curl -X POST https://api.whatsmiau.dev/message/sendMedia/Marketing01 \
-H "apikey: KEY" \
-H "Content-Type: application/json" \
-d '{
"number": "551199998888",
"mediatype": "image",
"media": "https://example.com/image.png",
"caption": "Confira!"
}'Enviar Áudio (PTT)
Envia um arquivo de áudio como se fosse gravado na hora (Push-To-Talk).
Parâmetros
Número do destinatário.
URL pública do arquivo MP3/OGG.
Atraso em milissegundos (máx: 300000).
Re-encodar o áudio antes de enviar.
Mensagem a ser respondida (key.id obrigatório).
Mencionar todos em grupos.
Lista de JIDs a mencionar.
curl -X POST https://api.whatsmiau.dev/message/sendWhatsAppAudio/Marketing01 \
-H "apikey: KEY" \
-H "Content-Type: application/json" \
-d '{
"number": "551199998888",
"audio": "https://example.com/voice.mp3"
}'Enviar Lista
Envia uma mensagem interativa com lista de opções para o usuário selecionar. Ideal para menus, catálogos e formulários simples.
Parâmetros
Número do destinatário (ex: 5511999998888).
Título da mensagem.
Descrição/corpo da mensagem.
Texto do botão que abre a lista.
Texto do rodapé.
Seções da lista, cada uma com title e rows[].
Título da seção.
Título da opção.
Descrição da opção.
ID único da opção (retornado no webhook).
curl -X POST https://api.whatsmiau.dev/message/sendList/Marketing01 \
-H "apikey: KEY" \
-H "Content-Type: application/json" \
-d '{
"number": "551199998888",
"title": "Nossos Planos",
"description": "Escolha o plano ideal para você:",
"buttonText": "Ver opções",
"footerText": "Whatsmiau Cloud",
"sections": [
{
"title": "Planos",
"rows": [
{ "title": "Starter", "description": "R$ 30/mês - 1 instância", "rowId": "plan_starter" },
{ "title": "Pro", "description": "R$ 90/mês - 5 instâncias", "rowId": "plan_pro" },
{ "title": "Enterprise", "description": "R$ 200/mês - 15 instâncias", "rowId": "plan_enterprise" }
]
}
]
}'Chat & Presença
Gerencie o estado do chat, reações e verificações de número.
Enviar Reação
Reage a uma mensagem específica com um emoji.
Parâmetros
Emoji da reação (ex: 👍, ❤️). String de 1 caractere.
Chave da mensagem alvo.
JID do chat (ex: 5511...@s.whatsapp.net).
ID da mensagem alvo.
Se a mensagem foi enviada por você.
curl -X POST https://api.whatsmiau.dev/message/sendReaction/Marketing01 \
-H "apikey: KEY" \
-H "Content-Type: application/json" \
-d '{
"reaction": "👍",
"key": {
"remoteJid": "5511999998888@s.whatsapp.net",
"id": "3EB0XXXXXXXX",
"fromMe": false
}
}'Enviar Presença
Simula o status de presença (digitando, gravando áudio, online) em um chat.
Parâmetros
Número do chat alvo (ex: 5511999998888).
"composing" (digitando) ou "available" (online).
"text" ou "audio". Define o tipo de presença.
Duração em milissegundos (máx: 300000).
curl -X POST https://api.whatsmiau.dev/chat/sendPresence/Marketing01 \
-H "apikey: KEY" \
-H "Content-Type: application/json" \
-d '{
"number": "551199998888",
"presence": "composing",
"type": "text",
"delay": 3000
}'Marcar como Lido
Marca mensagens específicas como lidas.
Parâmetros
Array de mensagens a marcar como lidas.
JID do chat (ex: 5511...@s.whatsapp.net).
ID da mensagem.
JID do remetente (obrigatório em grupos).
curl -X POST https://api.whatsmiau.dev/chat/markMessageAsRead/Marketing01 \
-H "apikey: KEY" \
-H "Content-Type: application/json" \
-d '{
"readMessages": [
{
"remoteJid": "5511999998888@s.whatsapp.net",
"id": "3EB0XXXXXXXX"
}
]
}'Verificar Número
Verifica se um número está registrado no WhatsApp.
Parâmetros
Lista de números para verificar.
curl -X POST https://api.whatsmiau.dev/chat/whatsappNumbers/Marketing01 \
-H "apikey: KEY" \
-H "Content-Type: application/json" \
-d '{
"numbers": ["551199998888"]
}'Deletar Mensagem
Revoga (apaga para todos) uma mensagem enviada ou recebida em um chat individual ou grupo.
Parâmetros
ID da mensagem a ser deletada.
JID do chat (ex: 5511999998888@s.whatsapp.net ou grupo@g.us).
Se a mensagem foi enviada por você (true) ou recebida (false).
JID do remetente original. Obrigatório ao deletar mensagem de outro participante em grupos.
curl -X DELETE https://api.whatsmiau.dev/chat/deleteMessageForEveryone/Marketing01 \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "3EB0XXXXXXXX",
"remoteJid": "5511999998888@s.whatsapp.net",
"fromMe": true
}'Webhooks
Configure webhooks para receber eventos em tempo real via HTTP POST.
Configurar Webhook
Define ou atualiza a configuração de webhook para uma instância. Permite configurar URL de destino, eventos que serão enviados, headers customizados e formato do payload.
Parâmetros
Ativa ou desativa o webhook.
URL que receberá os eventos via POST.
Lista de eventos para filtrar (ex: messages.upsert, connection.update).
Headers HTTP customizados enviados junto com cada evento.
Se true, envia um POST por evento. Se false, agrupa.
Se true, codifica o payload em base64.
curl -X POST https://api.whatsmiau.dev/webhook/set/MinhaInstancia \
-H "Content-Type: application/json" \
-H "apikey: SUA_CHAVE_AQUI" \
-d '{
"webhook": {
"enabled": true,
"url": "https://meusite.com/webhook",
"events": ["messages.upsert", "connection.update"],
"headers": {
"Authorization": "Bearer meu_token"
}
}
}'Consultar Webhook
Retorna a configuração atual de webhook para uma instância.
curl -X GET https://api.whatsmiau.dev/webhook/find/MinhaInstancia \
-H "apikey: SUA_CHAVE_AQUI"Eventos de Webhook
Todos os eventos são enviados como HTTP POST para a URL configurada, dentro de um envelope padrão. O campo data varia conforme o tipo de evento.
Envelope
{
event: string // Tipo do evento (ex: "messages.upsert")
instance: string // ID da instância
data: T // Payload específico do evento (ver abaixo)
date_time: string // Timestamp ISO 8601
sender: string // Remetente (quando aplicável)
server_url: string // URL do servidor
}messages.upsert
Disparado quando uma nova mensagem é recebida ou enviada. Inclui mensagens de texto, imagens, vídeos, áudios, documentos, reações, contatos, listas e botões.
Campos do payload (data)
Identificador da mensagem.
JID do chat (ex: 5511999999999@s.whatsapp.net).
Se a mensagem foi enviada por você.
ID único da mensagem.
JID do remetente em grupos.
Nome de exibição do remetente.
"sent" ou "received".
Conteúdo da mensagem. Apenas um dos campos abaixo estará presente por vez:
Mensagem de texto simples.
Imagem com url, mimetype, caption, width, height.
Vídeo com url, mimetype, caption, seconds.
Áudio com url, mimetype, seconds, ptt (voz).
Documento com url, mimetype, fileName, title.
Reação com key (mensagem alvo) e text (emoji).
Contato com displayName e vCard.
Resposta de lista com title e singleSelectReply.selectedRowId.
URL pública da mídia (imagem, áudio, vídeo, documento) após upload no storage.
Tipo da mensagem (ex: "conversation", "imageMessage", "audioMessage").
Unix timestamp em segundos.
ID da instância que recebeu a mensagem.
Contexto da mensagem (presente quando é resposta, menção ou mensagem efêmera).
ID da mensagem original (quando é resposta).
JID do autor da mensagem original.
Conteúdo da mensagem citada (mesma estrutura de message).
Lista de JIDs mencionados na mensagem.
Tempo de expiração em segundos (mensagens efêmeras).
{
"event": "messages.upsert",
"instance": "Atendimento01",
"date_time": "2026-03-30T14:32:00Z",
"data": {
"key": {
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": false,
"id": "3EB04A2D1F75..."
},
"pushName": "Maria Silva",
"status": "received",
"message": {
"conversation": "Olá! Gostaria de saber o status do meu pedido."
},
"messageType": "conversation",
"messageTimestamp": 1743349920,
"instanceId": "Atendimento01",
"source": "android"
}
}messages.update
Disparado quando o status de entrega de uma mensagem muda. Ocorre quando a mensagem é entregue no dispositivo do destinatário (DELIVERY_ACK) ou quando é lida (READ).
Campos do payload (data)
ID interno da mensagem.
ID da chave da mensagem.
JID do chat.
Se a mensagem foi enviada por você.
JID do participante (em grupos).
Novo status da mensagem.
ID da instância.
{
"event": "messages.update",
"instance": "Atendimento01",
"date_time": "2026-03-30T14:33:00Z",
"data": {
"messageId": "3EB04A2D1F75...",
"keyId": "3EB04A2D1F75...",
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": true,
"participant": "",
"status": "DELIVERY_ACK",
"instanceId": "Atendimento01"
}
}connection.update
Disparado quando o estado da conexão muda. Ocorre ao conectar com sucesso (escaneou QR Code), ao desconectar (logout, perda de sessão) ou em falhas de conexão.
Campos do payload (data)
ID da instância.
WhatsApp UID (número conectado). Presente apenas quando state = "open".
Nome do perfil do WhatsApp. Presente apenas quando state = "open".
URL da foto de perfil (quando disponível).
Estado atual da conexão.
Código do motivo (200 = sucesso, outros = erro).
{
"event": "connection.update",
"instance": "Atendimento01",
"date_time": "2026-03-30T10:00:00Z",
"data": {
"instance": "Atendimento01",
"wuid": "5511999998888@s.whatsapp.net",
"profileName": "Meu Negócio",
"profilePictureUrl": "https://pps.whatsapp.net/v/t61...",
"state": "open",
"statusReason": 200
}
}contacts.upsert
Disparado quando um contato ou grupo é criado ou atualizado. Inclui mudanças de nome de exibição (push name), nome comercial, foto de perfil, informações de grupo e sincronização de histórico. O payload é um array de contatos.
Campos do payload (data[])
JID do contato ou grupo.
LID do contato (identificador alternativo).
Nome de exibição do contato.
URL da foto de perfil.
ID da instância.
Gatilhos: Mudança de push name, nome comercial (WhatsApp Business), foto de perfil, criação/atualização de grupo, sincronização de histórico de contatos.
{
"event": "contacts.upsert",
"instance": "Atendimento01",
"date_time": "2026-03-30T15:00:00Z",
"data": [
{
"remoteJid": "5511999999999@s.whatsapp.net",
"remoteLid": "",
"pushName": "Maria Silva",
"profilePicUrl": "https://pps.whatsapp.net/v/t61...",
"instanceId": "Atendimento01"
}
]
}messages.delete
Disparado quando uma mensagem é apagada para todos (revoke). Ocorre quando o remetente apaga uma mensagem que já foi entregue — o WhatsApp envia um protocolo de revogação que dispara este evento.
Campos do payload (data)
ID da mensagem apagada.
JID do chat.
Se a mensagem apagada era sua.
JID do participante (em grupos).
Sempre "DELETED".
ID da instância.
{
"event": "messages.delete",
"instance": "Atendimento01",
"date_time": "2026-03-30T16:00:00Z",
"data": {
"id": "3EB04A2D1F75...",
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": false,
"participant": "",
"status": "DELETED",
"instanceId": "Atendimento01"
}
}
Whatsmiau