Baileys 7.0.0-rc13

Referência completa da API

A WAAS gerencia várias sessões do WhatsApp, QR dinâmico, envio e acompanhamento de mensagens, grupos, contatos, webhooks, usuários, planos e todas as capacidades públicas disponíveis no socket Baileys.

API não oficial. Esta integração não é afiliada ao WhatsApp. Use somente com consentimento dos destinatários e respeite os termos aplicáveis.

URL base: https://apiwpp.audreynogueira.com/api/v1. Envie JSON em UTF-8 com Content-Type: application/json; charset=utf-8.

Autenticação e escopos

Use o JWT retornado pelo login em Authorization: Bearer TOKEN ou uma chave em x-api-key: waas_....

POST /api/v1/auth/login
{"email":"admin@waas.local","password":"Admin@123456"}

Authorization: Bearer SEU_TOKEN
# ou
x-api-key: waas_SUA_CHAVE
POST/auth/loginAutentica e retorna JWT.
POST/auth/refreshRenova um JWT válido.
GET/auth/meUsuário, plano e cota efetiva.

Escopos de chave

EscopoPermite
*Acesso total do usuário.
instances:writeCriar, editar e excluir instâncias.
instances:connectIniciar, parar, atualizar QR e desvincular.
instances:advancedExecutor genérico de funções públicas Baileys.
messages:sendEnviar, editar, reagir e excluir mensagens.
groups:writeAdministrar grupos e participantes.
webhooks:writeCriar, editar e excluir webhooks.

Instâncias, conexão e QR Code

GET/instancesLista instâncias do usuário.
POST/instancesCria com name, rejectCalls, readMessages, markOnline, syncFullHistory.
GET/instances/:idEstado e configuração completos.
PATCH/instances/:idAtualiza nome e preferências.
DELETE/instances/:idApaga sessão e dados persistidos.
POST/instances/:id/startInicia ou restaura a conexão.
POST/instances/:id/stopPara sem desvincular.
POST/instances/:id/logoutDesvincula o WhatsApp.
GET/instances/:id/qrQR atual, versão, geração, expiração e segundos restantes; sem cache.
POST/instances/:id/qr/refreshForça sessão e QR novos.
POST/instances/:id/pairing-codePareamento por telefone: {"phoneNumber":"5511..."}.

Sincronização correta do QR

Consulte GET /qr a cada segundo ou acompanhe instance.qr por SSE/webhook. Substitua a imagem quando version aumentar. O painel executa esse fluxo e detecta a conexão automaticamente.

{
  "dataUrl": "data:image/png;base64,...",
  "status": "QR_CODE",
  "version": 3,
  "generatedAt": "2026-07-16T12:00:00.000Z",
  "expiresAt": "2026-07-16T12:00:55.000Z",
  "secondsRemaining": 41,
  "expired": false
}

Mensagens

GET/instances/:id/messagesHistórico da instância. Filtros: chatJid, limit, page, includeRaw. A resposta inclui metadados de mídia quando aplicável.
GET/instances/:id/messages/:messageId/media?chatJid=...Transmite a mídia do WhatsApp sob demanda, com Cache-Control: no-store; o arquivo não é gravado no servidor.
POST/instances/:id/messages/historySolicita até 50 mensagens anteriores ao aparelho: {"chatJid":"...","count":50}. A disponibilidade depende do WhatsApp e do telefone conectado.
POST/instances/:id/messages/textTexto, menções, citação e preview.
POST/instances/:id/messages/mediaImagem, vídeo, áudio/PTT, documento ou figurinha via URL HTTPS ou base64.
POST/instances/:id/messages/contactContato em vCard.
POST/instances/:id/messages/locationLatitude, longitude, nome e endereço.
POST/instances/:id/messages/pollEnquete com 2 a 12 opções.
POST/instances/:id/messages/reactionAdiciona ou remove reação.
PATCH/instances/:id/messages/editEdita mensagem enviada.
POST/instances/:id/messages/deleteApaga para todos.
POST/instances/:id/messages/readMarca chaves como lidas.
POST/instances/:id/presenceavailable, unavailable, composing, recording, paused.
Organização no painel. Cada instância mantém sua própria caixa, dividida em Contatos, Grupos, Status e Canais/listas. Imagens, vídeos e áudios só são descriptografados quando o operador clica em visualizar; o navegador usa uma URL temporária em memória e a revoga ao trocar de conversa.
POST /api/v1/instances/INSTANCE_ID/messages/text
{
  "to": "5511999999999",
  "text": "Olá!",
  "mentions": ["5511888888888"],
  "linkPreview": true
}

Destinos aceitam telefone com DDI, JID individual @s.whatsapp.net ou grupo @g.us. Não existe limite de mensagens na WAAS; a única cota comercial é o número de instâncias.

Grupos

GET/instances/:id/groupsLista grupos participantes.
POST/instances/:id/groupsCria grupo com nome e participantes.
GET/instances/:id/groups/:jidMetadados e participantes.
PATCH/instances/:id/groups/:jidNome, descrição, anúncios, bloqueio e mensagens temporárias.
POST/instances/:id/groups/:jid/participantsadd, remove, promote, demote.
GET/instances/:id/groups/:jid/inviteCódigo e URL do convite.
POST/instances/:id/groups/:jid/invite/revokeRevoga o convite.
POST/instances/:id/groups/joinEntra por código ou URL.
POST/instances/:id/groups/:jid/leaveSai do grupo.

Conversas, contatos e eventos em tempo real

GET/instances/:id/chatsConversas individuais e grupos, não lidas e última mensagem.
GET/instances/:id/contactsContatos sincronizados.
GET/instances/:id/eventsLog persistido de eventos.
GET/instances/:id/streamServer-Sent Events autenticado em tempo real.
const response = await fetch('/api/v1/instances/ID/stream', {
  headers: { Authorization: 'Bearer ' + token }
});
// Leia blocos "event: waas" e "data: {...}" de response.body.

Eventos: conexão, QR, mensagens novas/atualizadas/excluídas, confirmações, histórico, contatos, conversas, grupos, participantes, presença, chamadas, etiquetas e credenciais.

Webhooks assinados

GET/webhooks/eventsCatálogo de eventos.
GET/webhooksLista endpoints.
POST/webhooksCria e retorna o segredo uma vez.
PATCH/webhooks/:idAtualiza URL, eventos e estado.
DELETE/webhooks/:idExclui endpoint e entregas.

Use events: ["*"] para tudo. Entregas têm assinatura HMAC-SHA256 e retentativas automáticas. Guarde o segredo retornado na criação.

{
  "name": "CRM produção",
  "url": "https://seusistema.com/webhooks/waas",
  "events": ["messages.upsert", "instance.connected"],
  "enabled": true
}

Todas as funções públicas do Baileys

GET/instances/:id/capabilitiesDetecta em runtime todas as funções públicas do socket instalado.
POST/instances/:id/actions/:actionExecuta função pelo nome com {"args":[]}.

O API Lab do painel preenche a lista automaticamente. Funções de protocolo bruto, término interno e logout ficam bloqueadas no executor genérico; use os endpoints seguros dedicados.

POST /api/v1/instances/ID/actions/profilePictureUrl
{"args":["5511999999999@s.whatsapp.net","image"]}

Administração, planos e cotas

GET/dashboard/summaryResumo e cota efetiva.
GET/api-keysLista chaves.
POST/api-keysGera e exibe o valor uma vez.
DELETE/api-keys/:idExclui definitivamente.
GET/admin/usersLista usuários (ADMIN).
POST/admin/usersCria com plano e cota individual opcional.
PATCH/admin/users/:idEdita cadastro, plano, status, senha e cota.
DELETE/admin/users/:idExclui usuário.
GET/admin/plansLista planos.
POST/admin/plansCria plano personalizado.
PATCH/admin/plans/:idEdita preço, retenção e máximo de instâncias.
DELETE/admin/plans/:idExclui plano sem usuários.
GET/admin/auditAuditoria administrativa e avançada.

A cota efetiva é instanceQuotaOverride quando informada; caso contrário, maxInstances do plano. Mensagens, chaves e webhooks não têm cota.

Erros, paginação e exemplos

HTTPSignificado
400JSON ou parâmetros inválidos.
401Credencial ausente, expirada ou revogada.
403Escopo insuficiente, usuário suspenso ou recurso ADMIN.
404Recurso não encontrado ou QR ainda indisponível.
409Conflito, duplicidade, conectado ou limite de instâncias.
429Proteção contra excesso de requisições.
500/503Falha interna ou socket desconectado.

Listagens aceitam ?limit=100&offset=0. Erros usam {"error":"CODIGO","message":"Descrição"}.

cURL com chave de API

curl -X POST https://apiwpp.audreynogueira.com/api/v1/instances/INSTANCE_ID/messages/text \
  -H "x-api-key: waas_SUA_CHAVE" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{"to":"5511999999999","text":"Olá pela WAAS"}'

Para executar requisições no navegador, use o Swagger interativo. No painel, as mensagens são isoladas por instância e divididas em Contatos e Grupos.