📱 WuzAPI - Documentação da API
API REST completa para integração com WhatsApp. Envie mensagens, gerencie grupos, receba webhooks e muito mais.
https://sua-instancia.comTodas as requisições devem incluir o header
Token para autenticação.
🔑 Autenticação
Todas as requisições à API devem incluir o token de autenticação no header:
Token: seu_token_aqui
# Exemplo com cURL
curl -X POST "https://sua-instancia.com/session/connect" \
-H "Token: seu_token_aqui" \
-H "Content-Type: application/json"
🔐 Administração de Usuários Admin
Endpoints para gerenciar usuários/instâncias da API. Requer autenticação de administrador.
GET /admin/users
Lista todos os usuários cadastrados.
// Resposta
{
"code": 200,
"data": {
"users": [
{ "id": "1", "name": "Usuario 1", "token": "abc123..." },
{ "id": "2", "name": "Usuario 2", "token": "def456..." }
]
},
"success": true
}
POST /admin/users
Cria um novo usuário/instância.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| name | string | Nome do usuário |
| token | string | Token personalizado (gerado automaticamente se omitido) |
PUT /admin/users/{id}
Atualiza um usuário existente.
DELETE /admin/users/{id}
Remove um usuário.
DELETE /admin/users/{id}/full
Remove um usuário e todos os dados associados (sessão, histórico, etc).
📡 Sessão Session
POST /session/connect
Inicia a conexão com o WhatsApp. Após conectar, obtenha o QR Code.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Subscribe | array | Eventos para receber via webhook: ["Message", "ReadReceipt", "Presence", "ChatPresence", "Call", "Group", "HistorySync", "Newsletter"] |
| Immediate | boolean | Retornar imediatamente sem aguardar conexão |
// Request
{
"Subscribe": ["Message", "ReadReceipt", "Call"],
"Immediate": true
}
// Response
{
"code": 200,
"data": { "status": "connecting" },
"success": true
}
GET /session/status
Retorna o status atual da conexão.
// Response - Conectado
{
"code": 200,
"data": {
"Connected": true,
"LoggedIn": true,
"PushName": "Meu WhatsApp",
"JID": "5511999999999@s.whatsapp.net"
},
"success": true
}
GET /session/qr
Obtém o QR Code para escanear com o WhatsApp.
// Response
{
"code": 200,
"data": {
"QRCode": "data:image/png;base64,iVBORw0KGg..."
},
"success": true
}
POST /session/pairphone
Gera um código de pareamento para conectar sem QR Code.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número de telefone com código do país (ex: 5511999999999) |
// Request
{ "Phone": "5511999999999" }
// Response
{
"code": 200,
"data": { "PairCode": "ABCD-EFGH" },
"success": true
}
POST /session/disconnect
Desconecta a sessão atual (mantém dados para reconectar depois).
POST /session/logout
Faz logout completo (remove sessão, precisará escanear QR novamente).
🔔 Webhook
Configure webhooks para receber notificações de eventos em tempo real.
POST /webhook
Configura uma nova URL de webhook.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| WebhookURL | string | URL que receberá os eventos |
GET /webhook
Retorna a configuração atual do webhook.
PUT /webhook
Atualiza a URL do webhook.
DELETE /webhook
Remove o webhook configurado.
💬 Enviar Mensagens Chat
POST /chat/send/text
Envia uma mensagem de texto simples.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Body | string | Texto da mensagem |
| Id | string | ID personalizado da mensagem |
| ContextInfo | object | Para responder uma mensagem (reply) |
// Request simples
{
"Phone": "5511999999999",
"Body": "Olá! Esta é uma mensagem de teste."
}
// Request com reply
{
"Phone": "5511999999999",
"Body": "Esta é uma resposta!",
"ContextInfo": {
"StanzaId": "ID_DA_MENSAGEM_ORIGINAL",
"Participant": "5511999999999@s.whatsapp.net"
}
}
// Response
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "3EB0123456789",
"Timestamp": 1701234567
},
"success": true
}
POST /chat/send/image
Envia uma imagem.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Image | string | URL da imagem ou Base64 |
| Caption | string | Legenda da imagem |
{
"Phone": "5511999999999",
"Image": "https://exemplo.com/imagem.jpg",
"Caption": "Veja esta imagem!"
}
POST /chat/send/video
Envia um vídeo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Video | string | URL do vídeo ou Base64 |
| Caption | string | Legenda do vídeo |
| JpegThumbnail | string | Thumbnail em Base64 |
{
"Phone": "5511999999999",
"Video": "https://exemplo.com/video.mp4",
"Caption": "Confira este vídeo!"
}
POST /chat/send/audio
Envia um áudio (pode ser enviado como mensagem de voz).
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Audio | string | URL do áudio ou Base64 |
| Ptt | boolean | Se true, envia como mensagem de voz (push-to-talk) |
{
"Phone": "5511999999999",
"Audio": "https://exemplo.com/audio.mp3",
"Ptt": true
}
POST /chat/send/document
Envia um documento (PDF, DOC, XLS, etc).
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Document | string | URL do documento ou Base64 |
| FileName | string | Nome do arquivo |
| Mimetype | string | Tipo MIME do arquivo |
{
"Phone": "5511999999999",
"Document": "https://exemplo.com/relatorio.pdf",
"FileName": "Relatório_2024.pdf"
}
POST /chat/send/sticker
Envia um sticker (figurinha).
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Sticker | string | URL do sticker (WebP) ou Base64 |
| PngThumbnail | string | Thumbnail em Base64 |
POST /chat/send/location
Envia uma localização.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Latitude | float | Latitude |
| Longitude | float | Longitude |
| Name | string | Nome do local |
| Address | string | Endereço |
{
"Phone": "5511999999999",
"Latitude": -23.5505,
"Longitude": -46.6333,
"Name": "São Paulo",
"Address": "São Paulo, SP, Brasil"
}
POST /chat/send/contact
Envia um contato (vCard).
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Vcard | string | Contato em formato vCard |
| Name | string | Nome do contato |
POST /chat/send/poll
Envia uma enquete.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Name | string | Pergunta da enquete |
| Options | array | Opções de resposta |
| SelectableCount | int | Quantidade de respostas permitidas |
{
"Phone": "5511999999999",
"Name": "Qual sua cor favorita?",
"Options": ["Azul", "Verde", "Vermelho", "Amarelo"],
"SelectableCount": 1
}
POST /chat/send/edit
Edita uma mensagem já enviada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do chat |
| Id | string | ID da mensagem a editar |
| Body | string | Novo texto |
{
"Phone": "5511999999999",
"Id": "3EB0123456789",
"Body": "Mensagem editada!"
}
POST /chat/delete
Exclui uma mensagem.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do chat |
| Id | string | ID da mensagem |
| FromMe | boolean | Se a mensagem foi enviada por você |
{
"Phone": "5511999999999",
"Id": "3EB0123456789",
"FromMe": true
}
POST /chat/react
Envia uma reação (emoji) a uma mensagem.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do chat |
| Id | string | ID da mensagem |
| Reaction | string | Emoji da reação (ex: "👍", "❤️") |
{
"Phone": "5511999999999",
"Id": "3EB0123456789",
"Reaction": "👍"
}
POST /chat/send/list
Envia uma lista de opções organizadas em seções.
{
"Phone": "5511999999999",
"Title": "Menu Principal",
"Body": "Selecione uma opção:",
"Footer": "Deslize para ver mais",
"Buttons": [
{
"type": "list",
"title": "Ver Opções",
"sections": [
{
"title": "Produtos",
"rows": [
{ "id": "prod1", "title": "Produto 1", "description": "Descrição do produto" },
{ "id": "prod2", "title": "Produto 2", "description": "Outra descrição" }
]
},
{
"title": "Serviços",
"rows": [
{ "id": "serv1", "title": "Serviço 1", "description": "Descrição do serviço" }
]
}
]
}
]
}
POST /chat/send/pix
Envia mensagem com chave PIX para pagamento.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| pixKey | string | Chave PIX |
| pixType | string | Tipo: CPF, CNPJ, EMAIL, PHONE, EVP |
| pixName | string | Nome do recebedor |
{
"Phone": "5511999999999",
"pixKey": "email@exemplo.com",
"pixType": "EMAIL",
"pixName": "Loja Exemplo"
}
POST /chat/send/payment
Envia solicitação de pagamento completa com valor e múltiplas opções.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| amount | float | Valor em reais (ex: 199.90) |
| pixKey | string | Chave PIX |
| title | string | Título |
| text | string | Descrição |
| itemName | string | Nome do item |
| invoiceNumber | string | Número da fatura |
| boletoCode | string | Linha digitável do boleto |
| paymentLink | string | Link de pagamento externo |
| enableCards | boolean | Habilitar cartões |
{
"Phone": "5511999999999",
"title": "Pedido #12345",
"text": "Compra na Loja Exemplo",
"amount": 299.90,
"itemName": "Produto XYZ",
"pixKey": "loja@exemplo.com",
"pixType": "EMAIL",
"pixName": "Loja Exemplo LTDA",
"paymentLink": "https://pay.exemplo.com/abc123",
"enableCards": true
}
POST /chat/send/carousel
Envia carrossel de cards com imagens e botões.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| phone | string | Número do destinatário |
| carousel | array | Lista de cards |
| message | string | Mensagem principal |
Estrutura do Card:
| Campo | Tipo | Descrição |
|---|---|---|
| title | string | Título do card |
| text | string | Descrição |
| image | string | URL da imagem |
| buttons | array | Botões (máx. 3) |
Tipos de Botões do Carrossel:
| Tipo | Campos |
|---|---|
REPLY | id, label |
URL | label, url |
COPY | label, copyCode |
CALL | label, phoneNumber |
{
"phone": "5511999999999",
"message": "Confira nossos produtos:",
"carousel": [
{
"title": "Smartphone XYZ",
"text": "O mais avançado smartphone",
"image": "https://exemplo.com/smartphone.jpg",
"buttons": [
{ "id": "copy1", "label": "Copiar Código", "type": "COPY", "copyCode": "PROMO10" },
{ "id": "url1", "label": "Ver Detalhes", "type": "URL", "url": "https://loja.com/produto" },
{ "id": "call1", "label": "Ligar", "type": "CALL", "phoneNumber": "+5511999999999" }
]
},
{
"title": "Notebook ABC",
"text": "Para profissionais",
"image": "https://exemplo.com/notebook.jpg",
"buttons": [
{ "id": "btn1", "label": "Comprar", "type": "REPLY" },
{ "id": "url2", "label": "Saiba Mais", "type": "URL", "url": "https://loja.com/notebook" }
]
}
]
}
📥 Download de Mídia
POST /chat/downloadimage
Baixa uma imagem recebida.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Url | string | URL da mídia (do webhook) |
| MediaKey | string | Chave de criptografia |
| Mimetype | string | Tipo MIME |
| FileSHA256 | string | Hash SHA256 |
| FileLength | int | Tamanho do arquivo |
POST /chat/downloadvideo
Baixa um vídeo recebido. Mesmos parâmetros acima.
POST /chat/downloadaudio
Baixa um áudio recebido. Mesmos parâmetros acima.
POST /chat/downloaddocument
Baixa um documento recebido. Mesmos parâmetros acima.
👤 Usuário User
POST /user/info
Obtém informações de um usuário.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | array | Lista de números |
{
"Phone": ["5511999999999", "5511888888888"]
}
POST /user/check
Verifica se um número tem WhatsApp.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | array | Lista de números para verificar |
// Request
{ "Phone": ["5511999999999"] }
// Response
{
"code": 200,
"data": {
"5511999999999": {
"IsInWhatsapp": true,
"JID": "5511999999999@s.whatsapp.net"
}
},
"success": true
}
POST /user/avatar
Obtém a foto de perfil de um usuário.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do usuário |
| Preview | boolean | Se true, retorna thumbnail |
GET /user/contacts
Lista todos os contatos salvos.
POST /user/presence
Define o status de presença (online/offline).
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Presence | string | "available" ou "unavailable" |
👥 Grupos Group
POST /group/create
Cria um novo grupo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Name | string | Nome do grupo |
| Participants | array | Lista de números dos participantes |
{
"Name": "Grupo de Vendas",
"Participants": ["5511999999999", "5511888888888"]
}
GET /group/list
Lista todos os grupos que você participa.
GET /group/info
Obtém informações de um grupo.
| Query Param | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo (ex: 123456789@g.us) |
GET /group/invitelink
Obtém o link de convite do grupo.
| Query Param | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo |
POST /group/inviteinfo
Obtém informações de um link de convite.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| InviteCode | string | Código do convite |
POST /group/join
Entra em um grupo via link de convite.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| InviteCode | string | Código do convite |
POST /group/updateparticipants
Adiciona, remove ou promove participantes.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo |
| Participants | array | Lista de números |
| Action | string | "add", "remove", "promote", "demote" |
// Adicionar participante
{
"GroupJID": "123456789@g.us",
"Participants": ["5511999999999"],
"Action": "add"
}
// Promover a admin
{
"GroupJID": "123456789@g.us",
"Participants": ["5511999999999"],
"Action": "promote"
}
POST /group/name
Altera o nome do grupo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo |
| Name | string | Novo nome |
POST /group/topic
Altera a descrição do grupo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo |
| Topic | string | Nova descrição |
POST /group/photo
Define a foto do grupo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo |
| Image | string | URL ou Base64 da imagem |
POST /group/photo/remove
Remove a foto do grupo.
POST /group/announce
Ativa/desativa modo de anúncio (só admins enviam mensagens).
| Parâmetro | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo |
| Announce | boolean | true = só admins, false = todos |
POST /group/locked
Bloqueia/desbloqueia edição de info do grupo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo |
| Locked | boolean | true = só admins editam |
POST /group/ephemeral
Configura mensagens temporárias.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo |
| Timer | int | Segundos (0=desativado, 86400=24h, 604800=7dias, 7776000=90dias) |
POST /group/leave
Sai do grupo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| GroupJID | string | JID do grupo |
📞 Chamadas
POST /call/reject
Rejeita uma chamada recebida.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| CallFrom | string | JID de quem está ligando |
| CallId | string | ID da chamada (do webhook) |
⚙️ Configurações
POST /session/s3/config
Configura upload automático de mídias para Amazon S3.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Endpoint | string | URL do endpoint S3 |
| Region | string | Região (ex: us-east-1) |
| Bucket | string | Nome do bucket |
| AccessKeyId | string | Access Key |
| SecretAccessKey | string | Secret Key |
GET /session/s3/config
Retorna a configuração S3 atual.
DELETE /session/s3/config
Remove a configuração S3.
POST /session/s3/test
Testa a conexão com o S3.
POST /session/hmac/config
Configura assinatura HMAC para webhooks.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Secret | string | Chave secreta para assinatura |
GET /session/hmac/config
Retorna configuração HMAC (sem exibir a chave).
DELETE /session/hmac/config
Remove a configuração HMAC.
POST /session/proxy
Configura proxy para conexão WhatsApp.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| ProxyURL | string | URL do proxy (http://, socks5://) |
// HTTP Proxy
{ "ProxyURL": "http://proxy.exemplo.com:8080" }
// SOCKS5 Proxy com autenticação
{ "ProxyURL": "socks5://usuario:senha@proxy.exemplo.com:1080" }
🏥 Health Check
GET /health
Verifica se a API está funcionando (não requer autenticação).
// Response
{
"code": 200,
"data": { "status": "ok" },
"success": true
}