Documentação da API
Integração e Referência
Sugestões práticas para reduzir a chance de detecção automática ao usar automação via WhatsApp:
- Evite repetir exatamente o mesmo texto; varie frases, chamadas e pontuação.
- Espaçe os envios: use intervalos aleatórios e filas; não dispare em rajadas.
- Não faça envios em massa. Divida lotes e distribua ao longo do tempo.
- Alterne formatos: intercale textos com mídia leve (quando fizer sentido).
- Simule contexto: responda a mensagens anteriores quando aplicável.
- Evite links encurtados repetidos e mensagens excessivamente promocionais.
- Respeite horários plausíveis e pausar ao detectar erros/bloqueios.
- Revise destinatários e listas com frequência; remova números inativos.
WHATSAPP_PROTOCOL_TIMEOUT_MS e verifique recursos do container.
Autenticação
Primeiros passos (Onboarding rápido)
Integração com n8n
Se você usa n8n, existe um node community “APIWHSTP” para consumir os endpoints REST. Para receber eventos, use o node Webhook do n8n e configure a URL no menu “Webhook” do portal.
Esta página documenta apenas os endpoints da API do Cliente (integração). Para usar os endpoints abaixo, envie sua API Key no header.
Headers
Enviar Mensagem
Utilize este endpoint para enfileirar mensagens de texto via WhatsApp automaticamente através do seu sistema. O destino deve ser enviado via query: ?phone=... (contato) ou ?groupId=... (grupo). Opcionalmente, envie replyId para responder (citar) uma mensagem anterior do mesmo chat (use o campo message.id recebido no webhook).
Recomendação de performance: em cenários de alto volume, valide previamente os números com GET /check-whatsapp e evite enviar para números sem WhatsApp. Isso reduz processamento e tráfego desnecessário. O endpoint de verificação usa cache (por conta + telefone) por alguns minutos. Em caso de timeout na validação no momento do envio, o sistema pode enfileirar com <digits>@c.us para não bloquear sua requisição; se o envio falhar por número inválido, o cache é atualizado como negativo.
Query Params (destino)
Body (JSON)
Exemplo de uso (cURL)
Respostas
- 202 Accepted: Mensagem enfileirada (retorna o
idda fila). - 400 Bad Request: Parâmetros inválidos ou telefone incorreto.
- 401 Unauthorized: API Key não fornecida.
- 403 Forbidden: API Key inválida.
- 409 Conflict: Sessão do WhatsApp não conectada.
- 500 Internal Server Error: Falha no processamento.
Exemplo de Sucesso (enfileirado)
Exemplo de Erro
Enviar Lista Interativa
Envie uma lista interativa do WhatsApp com botão, seções e itens. O destino deve ser enviado via query: ?phone=... (contato) ou ?groupId=... (grupo). Campos obrigatórios: buttonText, sections e um destino via query. text (ou message) é opcional.
Query Params (destino)
Body (JSON)
Exemplo de uso (cURL)
Respostas
- 202 Accepted: Lista enfileirada (retorna o
idda fila). - 400 Bad Request: Campos inválidos/ausentes.
- 401 Unauthorized: API Key não fornecida.
- 403 Forbidden: API Key inválida.
- 409 Conflict: Sessão do WhatsApp não conectada.
- 500 Internal Server Error: Falha no processamento.
Fila (Status e Gerenciamento)
Após enviar uma mensagem/mídia/áudio/localização, consulte a fila para acompanhar o status (queued, processing, success, error) e para deletar itens.
Query Params (opcional)
Exemplo de uso (cURL) — listar tudo
Exemplo de uso (cURL) — por id
Exemplo de uso (cURL) — filtro por status
Exemplo de uso (cURL) — deletar por id
Verificar se um número possui WhatsApp
Verifica se um número está registrado no WhatsApp. Envie o parâmetro phone via query. O endpoint remove automaticamente caracteres especiais (ex.: +, espaços, parênteses) e considera apenas números. Resultado cacheado por 5 minutos por conta + telefone.
Query Params
Exemplo de uso (cURL)
Respostas
- 200 OK: Retorna
isWhatsAppcomotrueoufalse. - 400 Bad Request: Parâmetro inválido.
- 401 Unauthorized: API Key não fornecida.
- 403 Forbidden: API Key inválida.
- 409 Conflict: WhatsApp do cliente não está conectado.
- 500 Internal Server Error: Falha no processamento.
Exemplo de Sucesso
Enviar Mídia (Imagem, Vídeo, Áudio, Documento)
Envie arquivos de mídia fornecendo o conteúdo em Base64 no formato Data URI (ex.: data:image/png;base64,...). O envio é sempre realizado como anexo (inclusive áudio). Para áudio, use preferencialmente audio/mpeg (mp3), audio/mp4 (m4a) ou audio/ogg. WAV (audio/wav) não é suportado. Para enviar áudio como voz/PTT, use o endpoint /send-audio. Destino via query: ?phone=... ou ?groupId=....
Query Params (destino)
Body (JSON)
Exemplo de uso (cURL) — contato
Exemplo de uso (cURL) — grupo
O campo base64 deve obrigatoriamente estar no formato Data URI (ex.: data:image/png;base64,...) para que o tipo de mídia seja identificado automaticamente. Limite de payload: 100MB.
Respostas
- 202 Accepted: Mídia enfileirada (retorna o
idda fila). - 400 Bad Request: Parâmetros inválidos ou telefone incorreto.
- 401 Unauthorized: API Key não fornecida.
- 403 Forbidden: API Key inválida.
- 409 Conflict: Sessão do WhatsApp não conectada.
- 500 Internal Server Error: Falha no processamento.
Exemplo de Sucesso (enfileirado)
Enviar Áudio como Voz/PTT
Envie um áudio OGG/Opus no formato Data URI (data:audio/ogg;base64,...); o sistema valida o tipo e envia como voz/PTT. Destino via query: ?phone=... ou ?groupId=....
Query Params (destino)
Body (JSON)
Exemplo de uso (cURL) — contato
Exemplo de uso (cURL) — grupo
Requisitos: base64 deve iniciar com data:audio/ogg;base64, (OGG/Opus). Se não for áudio válido, a API retorna erro 400. Limite de payload: 100MB. Este endpoint envia sempre como voz/PTT.
Respostas
- 202 Accepted: Áudio enfileirado (retorna o
idda fila). - 400 Bad Request: Parâmetros inválidos ou telefone incorreto.
- 401 Unauthorized: API Key não fornecida.
- 403 Forbidden: API Key inválida.
- 409 Conflict: Sessão do WhatsApp não conectada.
- 500 Internal Server Error: Falha no processamento.
Exemplo de Sucesso (enfileirado)
Atendimento Humano
Gerencie o status de atendimento humano para pausar o bot.
Inicia o atendimento humano (pausa o bot).
Body (JSON)
Encerra o atendimento humano (retoma o bot).
Body (JSON)
Lista números em atendimento humano. Se enviar ?phone=, retorna apenas se o número está em atendimento (true/false).
Exemplo de uso (cURL) — listar
Exemplo de uso (cURL) — checar um número
Respostas
Listar
Checar
Enviar Localização
Envie uma localização geográfica (latitude e longitude). Destino via query: ?phone=... ou ?groupId=....
Query Params (destino)
Body (JSON)
Exemplo de uso (cURL) — contato
Exemplo de uso (cURL) — grupo
Respostas
- 202 Accepted: Localização enfileirada (retorna o
idda fila). - 400 Bad Request: Parâmetros inválidos ou telefone incorreto.
- 401 Unauthorized: API Key não fornecida.
- 403 Forbidden: API Key inválida.
- 409 Conflict: Sessão do WhatsApp não conectada.
- 500 Internal Server Error: Falha no processamento.
Exemplo de Sucesso (enfileirado)
Listar Grupos
Recupere a lista de grupos onde seu WhatsApp está inserido para obter os IDs. Suporta limite de resultados e usa cache com validade de aproximadamente 5 minutos para acelerar chamadas subsequentes. Em caso de timeout, quando houver um cache anterior disponível, a API retorna o último resultado com o marcador stale: true. Ajuste o tempo de espera via variável GROUPS_TIMEOUT_MS.
Exemplo de uso (cURL)
Limpa o cache de grupos associado à sua conta.
Exemplo de uso (cURL)
Resposta
Webhook — Configuração
Defina para onde as mensagens recebidas serão encaminhadas.
Exemplo de uso (cURL)
Body
Exemplo de uso (cURL)
Exemplo de uso (cURL)
Webhook — Grupos (Filtro)
Por padrão, mensagens recebidas em grupos não são encaminhadas para o webhook. Para receber mensagens de um grupo específico, habilite-o nesta seção.
Lista os grupos com webhook habilitado para a sua conta.
Exemplo de uso (cURL)
Resposta
Habilita ou desabilita o encaminhamento de mensagens de um grupo para o webhook.
Body (JSON)
Exemplo de uso (cURL)
Resposta
- 200 OK: Preferência atualizada.
- 400 Bad Request:
groupIdausente ou inválido. - 401 Unauthorized: API Key não fornecida.
- 403 Forbidden: API Key inválida.
- 409 Conflict: Número do WhatsApp não vinculado ao usuário.
Equipe (Staff)
Gerencie membros da sua equipe de atendimento. Ao adicionar/remover um número, o sistema envia uma mensagem automática para avisar o contato.
Autenticação: api-key.
Exemplo de uso (cURL)
Adiciona um número como staff e envia uma mensagem de confirmação via WhatsApp.
Body (JSON)
Resposta
Exemplo de uso (cURL)
- 200 OK: Staff adicionado.
- 400 Bad Request:
phoneinválido/ausente. - 401 Unauthorized: Não autenticado.
- 409 Conflict: WhatsApp do cliente não está conectado.
- 500 Internal Server Error: Falha ao enviar mensagem de cadastro.
Remove um número da staff. Se o WhatsApp estiver conectado, o contato recebe uma mensagem de remoção.
Body (JSON)
Resposta
Exemplo de uso (cURL)
- 200 OK: Staff removido.
- 400 Bad Request:
phoneinválido/ausente. - 401 Unauthorized: Não autenticado.
Envia uma mensagem de aviso para todos os números cadastrados como staff.
Body (JSON)
Resposta
Exemplo de uso (cURL)
- 200 OK: Mensagem enviada para a staff.
- 400 Bad Request:
messageausente. - 401 Unauthorized: API Key não fornecida.
- 403 Forbidden: API Key inválida.
- 409 Conflict: WhatsApp não conectado ou sem staff cadastrada.