Alternativa ao WAHA para quem não quer manter container
O WAHA é uma API HTTP de WhatsApp open source que você sobe como container Docker no próprio servidor. Ele funciona bem para começar, e a busca por alternativa costuma surgir quando as sessões se multiplicam e a operação passa a ocupar o time. A D-API oferece o mesmo tipo de API como serviço, com conexão oficial e não oficial, e as rotas se traduzem quase uma a uma.
O que o WAHA oferece hoje
Pela documentação oficial, o WAHA roda em Docker e expõe uma API REST com Swagger. Cada conta de WhatsApp é uma sessão, criada com um nome, e a autenticação é feita pelo header X-Api-Key. Ele trabalha com motores de conexão diferentes:
- WEBJS e WPP: rodam uma instância real do WhatsApp Web num navegador controlado pelo Puppeteer.
- NOWEB e GOWS: falam com o WhatsApp Web direto por WebSocket, sem navegador, o que economiza CPU e memória. O GOWS é escrito em Go.
Sobre as versões: por muito tempo existiram o WAHA Core, gratuito, e o WAHA Plus, com recursos extras liberados por doação. A documentação informa que, desde a versão 2026.6.1, os recursos do Plus foram incorporados ao Core. Se você usa uma versão anterior, vale checar em qual das duas está antes de planejar qualquer mudança.
A própria documentação é transparente sobre o risco: o WhatsApp não permite clientes não oficiais, então o uso não deve ser considerado totalmente seguro. Esse aviso vale para qualquer API não oficial, incluindo a D-API, e é por isso que isolamento e boas práticas de envio pesam tanto.
Quando faz sentido procurar uma alternativa ao WAHA
O projeto resolve bem o "conectar e enviar". As dores aparecem em outra camada:
- Muitas sessões num mesmo host. Um container com dezenas de números concentra risco: se ele reinicia, todos caem juntos, e sem proxy configurado todos saem pelo mesmo IP.
- Consumo de recursos. Engines com navegador pesam em memória; escalar significa mais máquinas e distribuir sessões entre elas.
- Cliente pedindo a API oficial. Os motores do WAHA descritos na documentação se conectam ao WhatsApp Web; quem precisa também da Cloud API da Meta quer as duas atrás da mesma integração.
- Ninguém quer ser o plantão do WhatsApp. Atualizar imagem, acompanhar mudanças do protocolo e recuperar sessões presas consome horas que não viram produto.
WAHA e D-API em critérios objetivos
| Critério | WAHA | D-API |
|---|---|---|
| Onde roda | Seu servidor, via Docker | Infraestrutura da D-API |
| Custo | Software gratuito; você paga servidor e operação | Por conexão, com valor menor conforme o volume |
| Conexão oficial (Cloud API) | Verifique com o projeto | Sim, na mesma API da não oficial |
| Isolamento entre números | Depende de como você distribui sessões e containers | Ambiente isolado por instância |
| IP por número | Depende da sua configuração de rede | Proxy com IP único por conexão |
| Autenticação | Header X-Api-Key | Header Authorization |
| Suporte | Comunidade e tier de apoio | Time da D-API, em português |
Uma comparação mais ampla entre hospedar e contratar está em self-hosted vs gerenciada, e o funcionamento da conexão por QR Code está em API de WhatsApp com QR Code.
Mapeamento de rotas do WAHA para a D-API
Como as duas são REST e organizadas em torno de sessões, a tradução é quase mecânica. As principais diferenças estão no formato do destinatário e no nome dos campos:
| WAHA | D-API |
|---|---|
POST /api/sessions com name | POST /api/v1/sessions com sessionId |
POST /api/sendText com session, chatId e text | POST /api/v1/messages/send/text com sessionId, to e text |
chatId no formato [email protected] | to só com o número: 5511999999999 |
Header X-Api-Key | Header Authorization com a API Key, sem Bearer |
| Webhooks configurados na sessão | webhookUrl na criação da sessão ou webhook-config com URL por evento |
Se o seu código chama o WAHA a partir de uma função própria, a troca pode ficar restrita a ela. Um adaptador de envio de texto em JavaScript fica assim:
// antes: fetch('http://seu-waha:3000/api/sendText', ...)
async function sendText(session, chatId, text) {
const to = chatId.replace('@c.us', '')
const res = await fetch('https://api.d-api.cloud/api/v1/messages/send/text', {
method: 'POST',
headers: {
Authorization: process.env.DAPI_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({ sessionId: session, to, text }),
})
if (!res.ok) {
const { error, statusCode } = await res.json()
throw new Error(`D-API ${statusCode}: ${error}`)
}
}Manter a assinatura antiga da função (session, chatId, text) evita mexer em quem a chama. Em Node.js, o SDK d-api-sdk substitui o fetch manual por dapi.messages.sendText.
Roteiro de migração em cinco passos
- Liste as rotas do WAHA que o seu sistema chama e os eventos de webhook que ele consome.
- Escreva o adaptador para a D-API e um receptor para o envelope de evento, que traz
event,sessionIdedata. - Crie na D-API uma sessão por número, com o mesmo nome que você usava no WAHA para facilitar o rastreio.
- Conecte cada número pelo QR Code (
GET /api/v1/sessions/SEU_ID/qr) e aguarde o eventoconnection.statuscomconnected. - Pare a sessão correspondente no WAHA e, quando não restar nenhuma, desligue o container.
A D-API é uma API de WhatsApp pensada para quem precisa de muitas conexões estáveis, e a API não oficial é o ponto de partida natural para quem vem do WAHA. O teste de 3 dias basta para validar o adaptador com um número real. Se estiver avaliando outras opções, veja também a alternativa à Twilio.
Perguntas frequentes
O que é o WAHA?
WAHA significa WhatsApp HTTP API. É um projeto open source distribuído como imagem Docker, que você roda no seu servidor para expor uma API REST não oficial de WhatsApp, com sessões, webhooks e painel.
Qual a diferença entre WAHA Core e WAHA Plus?
Até a versão 2026.6.1 o Plus reunia recursos como várias sessões por container e mensagens de mídia, liberados por doação. Segundo a documentação oficial, a partir dessa versão tudo foi incorporado ao Core, que é gratuito, e o apoio financeiro passou a ser um tier de comunidade sem recursos exclusivos.
O número conectado no WAHA pode ser usado na D-API?
Pode. O número não pertence ao provedor. Você cria uma sessão na D-API, lê o QR Code ou usa o código de pareamento com o mesmo aparelho, e depois encerra a sessão antiga no WAHA.
A D-API também usa um navegador por conexão?
O detalhe do motor de conexão fica do nosso lado e não muda a forma de integrar. Para quem integra, o que importa é que cada conexão roda em ambiente isolado, com IP próprio e recuperação automática.
Vale a pena migrar se meu WAHA roda sem problemas?
Se roda bem, com poucas sessões e alguém que cuida dele, talvez não. A troca começa a fazer sentido quando o número de sessões cresce, quando você precisa da API oficial para alguns clientes ou quando manter o container compete com o roadmap.
Continue lendo
Teste a API de WhatsApp da D-API
Trial de 3 dias com acesso completo. Sem cartão, sem fidelidade.