Quickstart
Objetivo: sair de "sem conta" até "mensagem de WhatsApp enviada" em cinco passos. Aqui a gente usa curl. As mesmas chamadas funcionam em qualquer cliente HTTP.
Você vai precisar de uma conta real de WhatsApp para escanear o QR. Use um número secundário — o gateway abre uma sessão do WhatsApp Web nele, igual à aba do WhatsApp Web no seu navegador.
1 · Pegue uma chave de API
Entre no dashboard em https://app.whatisup.dev. Há três provedores de login suportados:
- E-mail + senha — instantâneo, sem terceiros.
- Google — OAuth em um clique.
- GitHub — OAuth em um clique, pede
read:user+user:emailpara a gente ter seu nome + e-mail no cadastro de cliente.
Escolha o que preferir. Se você se cadastrar por um provedor e depois entrar por outro usando o mesmo e-mail, o dashboard vincula os dois de forma transparente para você manter um único cadastro de cliente.
Depois Configurações → Chaves de API → Criar. Copie a chave — ela só é mostrada uma vez. Defina como variável de ambiente para os trechos abaixo funcionarem como estão:
export WHATISUP_API_KEY=zpk_••••••••
export WHATISUP_API=https://api.whatisup.dev2 · Crie um canal
Um canal é uma conexão lógica de WhatsApp. Cada um ganha seu próprio QR.
curl -sX POST "$WHATISUP_API/v1/channels" \
-H "Authorization: Bearer $WHATISUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"primary"}'Você vai receber algo assim de volta:
{
"id": "inst_01J...",
"name": "primary",
"status": "pending",
"created_at": "2026-05-01T12:34:56.000Z"
}O status: "pending" significa que o gateway ainda não iniciou uma sessão. Anote o id — você vai usá-lo em tudo abaixo como CHANNEL_ID.
3 · Pegue o código QR
Chame o endpoint de QR até ele retornar um. O canal inicia uma sessão na primeira busca de QR.
curl -s "$WHATISUP_API/v1/channels/inst_01J.../qr" \
-H "Authorization: Bearer $WHATISUP_API_KEY"A resposta carrega um PNG codificado em base64 e uma string no formato da requisição:
{
"qr": "data:image/png;base64,iVBORw0KGgo...",
"raw": "2@dPBI4Tg9Mc...,vlD4Pmkr...",
"expires_at": "2026-05-01T12:35:25.000Z"
}Abra a data URL no navegador, ou passe .qr por um renderizador. Escaneie pelo WhatsApp → Configurações → Aparelhos conectados → Conectar um aparelho.
A interface do dashboard faz isso para você em tempo real via SSE. Se você prefere não lidar com o encanamento do QR na mão, aponte o dashboard para o seu gateway e clique em Parear.
4 · Espere por connected
Consulte o canal até o status virar connected:
curl -s "$WHATISUP_API/v1/channels/inst_01J..." \
-H "Authorization: Bearer $WHATISUP_API_KEY"…ou, bem melhor, assine os Server-Sent Events e reaja ao channel.connected:
curl -s "$WHATISUP_API/v1/events" \
-H "Authorization: Bearer $WHATISUP_API_KEY"5 · Envie sua primeira mensagem
curl -sX POST "$WHATISUP_API/v1/channels/inst_01J.../messages" \
-H "Authorization: Bearer $WHATISUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"text","to":"5511999999999@s.whatsapp.net","text":"Hello from WhatIsUp.dev"}'to é um JID do WhatsApp — <dígitos>@s.whatsapp.net (código do país + número nacional, sem +, depois @s.whatsapp.net). O gateway retorna 202 com um message_id e emite um webhook message.sent. Ele não persiste corpos de mensagem, então não há endpoint de status de mensagem para consultar — acompanhe a entrega pelo seu webhook.
Para onde ir agora
- Conecte um webhook para parar de ficar consultando: Conceitos → Webhooks.
- Verifique assinaturas de webhook: Webhooks → Verificação de assinatura.
- Explore a superfície REST completa: Referência da API → Canais.