📱 WuzAPI - Documentação da API

API REST completa para integração com WhatsApp. Envie mensagens, gerencie grupos, receba webhooks e muito mais.

💡 Base URL: https://sua-instancia.com
Todas 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:

Header obrigatório: 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âmetroTipoDescrição
namestringNome do usuário
tokenstringToken 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âmetroTipoDescrição
SubscribearrayEventos para receber via webhook: ["Message", "ReadReceipt", "Presence", "ChatPresence", "Call", "Group", "HistorySync", "Newsletter"]
ImmediatebooleanRetornar 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âmetroTipoDescrição
PhonestringNú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âmetroTipoDescrição
WebhookURLstringURL 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âmetroTipoDescrição
PhonestringNúmero do destinatário
BodystringTexto da mensagem
IdstringID personalizado da mensagem
ContextInfoobjectPara 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âmetroTipoDescrição
PhonestringNúmero do destinatário
ImagestringURL da imagem ou Base64
CaptionstringLegenda da imagem
{
  "Phone": "5511999999999",
  "Image": "https://exemplo.com/imagem.jpg",
  "Caption": "Veja esta imagem!"
}

POST /chat/send/video

Envia um vídeo.

ParâmetroTipoDescrição
PhonestringNúmero do destinatário
VideostringURL do vídeo ou Base64
CaptionstringLegenda do vídeo
JpegThumbnailstringThumbnail 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âmetroTipoDescrição
PhonestringNúmero do destinatário
AudiostringURL do áudio ou Base64
PttbooleanSe 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âmetroTipoDescrição
PhonestringNúmero do destinatário
DocumentstringURL do documento ou Base64
FileNamestringNome do arquivo
MimetypestringTipo 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âmetroTipoDescrição
PhonestringNúmero do destinatário
StickerstringURL do sticker (WebP) ou Base64
PngThumbnailstringThumbnail em Base64

POST /chat/send/location

Envia uma localização.

ParâmetroTipoDescrição
PhonestringNúmero do destinatário
LatitudefloatLatitude
LongitudefloatLongitude
NamestringNome do local
AddressstringEndereç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âmetroTipoDescrição
PhonestringNúmero do destinatário
VcardstringContato em formato vCard
NamestringNome do contato

POST /chat/send/poll

Envia uma enquete.

ParâmetroTipoDescrição
PhonestringNúmero do destinatário
NamestringPergunta da enquete
OptionsarrayOpções de resposta
SelectableCountintQuantidade 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âmetroTipoDescrição
PhonestringNúmero do chat
IdstringID da mensagem a editar
BodystringNovo texto
{
  "Phone": "5511999999999",
  "Id": "3EB0123456789",
  "Body": "Mensagem editada!"
}

POST /chat/delete

Exclui uma mensagem.

ParâmetroTipoDescrição
PhonestringNúmero do chat
IdstringID da mensagem
FromMebooleanSe a mensagem foi enviada por você
{
  "Phone": "5511999999999",
  "Id": "3EB0123456789",
  "FromMe": true
}

POST /chat/react

Envia uma reação (emoji) a uma mensagem.

ParâmetroTipoDescrição
PhonestringNúmero do chat
IdstringID da mensagem
ReactionstringEmoji da reação (ex: "👍", "❤️")
{
  "Phone": "5511999999999",
  "Id": "3EB0123456789",
  "Reaction": "👍"
}

🎛️ Mensagens Interativas

POST /chat/send/buttons

Envia mensagem com botões interativos.

ParâmetroTipoDescrição
PhonestringNúmero do destinatário
bodystringTexto principal
buttonsarrayLista de botões
titlestringTítulo da mensagem
footerstringRodapé

Tipos de Botões:

TipoCamposDescrição
replyid, titleBotão de resposta rápida
urltitle, urlAbre link externo
copytitle, copyCodeCopia texto
calltitle, phoneNumberInicia ligação
{
  "Phone": "5511999999999",
  "body": "Escolha uma opção:",
  "footer": "WuzAPI",
  "buttons": [
    { "type": "reply", "title": "Opção 1", "id": "opt1" },
    { "type": "url", "title": "Acessar Site", "url": "https://exemplo.com" },
    { "type": "copy", "title": "Copiar Código", "copyCode": "PROMO2024" },
    { "type": "call", "title": "Ligar", "phoneNumber": "+5511999999999" }
  ]
}

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âmetroTipoDescrição
PhonestringNúmero do destinatário
pixKeystringChave PIX
pixTypestringTipo: CPF, CNPJ, EMAIL, PHONE, EVP
pixNamestringNome 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âmetroTipoDescrição
PhonestringNúmero do destinatário
amountfloatValor em reais (ex: 199.90)
pixKeystringChave PIX
titlestringTítulo
textstringDescrição
itemNamestringNome do item
invoiceNumberstringNúmero da fatura
boletoCodestringLinha digitável do boleto
paymentLinkstringLink de pagamento externo
enableCardsbooleanHabilitar 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
}

📥 Download de Mídia

POST /chat/downloadimage

Baixa uma imagem recebida.

ParâmetroTipoDescrição
UrlstringURL da mídia (do webhook)
MediaKeystringChave de criptografia
MimetypestringTipo MIME
FileSHA256stringHash SHA256
FileLengthintTamanho 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âmetroTipoDescrição
PhonearrayLista de números
{
  "Phone": ["5511999999999", "5511888888888"]
}

POST /user/check

Verifica se um número tem WhatsApp.

ParâmetroTipoDescrição
PhonearrayLista 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âmetroTipoDescrição
PhonestringNúmero do usuário
PreviewbooleanSe true, retorna thumbnail

GET /user/contacts

Lista todos os contatos salvos.

POST /user/presence

Define o status de presença (online/offline).

ParâmetroTipoDescrição
Presencestring"available" ou "unavailable"

👥 Grupos Group

POST /group/create

Cria um novo grupo.

ParâmetroTipoDescrição
NamestringNome do grupo
ParticipantsarrayLista 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 ParamTipoDescrição
GroupJIDstringJID do grupo (ex: 123456789@g.us)

GET /group/invitelink

Obtém o link de convite do grupo.

Query ParamTipoDescrição
GroupJIDstringJID do grupo

POST /group/inviteinfo

Obtém informações de um link de convite.

ParâmetroTipoDescrição
InviteCodestringCódigo do convite

POST /group/join

Entra em um grupo via link de convite.

ParâmetroTipoDescrição
InviteCodestringCódigo do convite

POST /group/updateparticipants

Adiciona, remove ou promove participantes.

ParâmetroTipoDescrição
GroupJIDstringJID do grupo
ParticipantsarrayLista de números
Actionstring"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âmetroTipoDescrição
GroupJIDstringJID do grupo
NamestringNovo nome

POST /group/topic

Altera a descrição do grupo.

ParâmetroTipoDescrição
GroupJIDstringJID do grupo
TopicstringNova descrição

POST /group/photo

Define a foto do grupo.

ParâmetroTipoDescrição
GroupJIDstringJID do grupo
ImagestringURL 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âmetroTipoDescrição
GroupJIDstringJID do grupo
Announcebooleantrue = só admins, false = todos

POST /group/locked

Bloqueia/desbloqueia edição de info do grupo.

ParâmetroTipoDescrição
GroupJIDstringJID do grupo
Lockedbooleantrue = só admins editam

POST /group/ephemeral

Configura mensagens temporárias.

ParâmetroTipoDescrição
GroupJIDstringJID do grupo
TimerintSegundos (0=desativado, 86400=24h, 604800=7dias, 7776000=90dias)

POST /group/leave

Sai do grupo.

ParâmetroTipoDescrição
GroupJIDstringJID do grupo

📰 Newsletter (Canais)

GET /newsletter/list

Lista os canais que você segue.

📞 Chamadas

POST /call/reject

Rejeita uma chamada recebida.

ParâmetroTipoDescrição
CallFromstringJID de quem está ligando
CallIdstringID da chamada (do webhook)

⚙️ Configurações

POST /session/s3/config

Configura upload automático de mídias para Amazon S3.

ParâmetroTipoDescrição
EndpointstringURL do endpoint S3
RegionstringRegião (ex: us-east-1)
BucketstringNome do bucket
AccessKeyIdstringAccess Key
SecretAccessKeystringSecret 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âmetroTipoDescrição
SecretstringChave 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âmetroTipoDescrição
ProxyURLstringURL 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
}