Canais
Um canal é um número de WhatsApp pareado. Toda mensagem que você envia e toda mensagem que você recebe pertence a exatamente um canal. Você pode rodar quantos canais o seu plano permitir.
Fluxo de pareamento
Você cria o canal, o gateway te mostra um código QR, você escaneia uma vez pelo celular, e o canal está pareado. Depois disso a conexão vive no gateway — você não roda nada do seu lado para mantê-la aberta.
Ciclo de vida
Os canais passam por um pequeno conjunto de estados que a API expõe pelo campo status:
| Status | Significado |
|---|---|
pending | Canal criado. A conexão ainda não começou — busque um QR para iniciar. |
qr | Um código QR está pronto; mostre-o para o usuário escanear. |
connecting | Handshake em andamento (pós-scan ou pós-reconexão). |
connected | Online. Você pode enviar e receber mensagens. |
disconnected | Caiu. O gateway vai tentar reconectar automaticamente. |
failed | Reset manual necessário (revogado, banido, ou falha repetida de reconexão). |
O stream de eventos e os webhooks channel.connected / channel.disconnected disparam em toda transição, então a sua aplicação não precisa ficar consultando. Um canal novinho começa em pending — ele não começa em failed. failed só aparece depois que uma tentativa de conexão real deu erro.
Criar + listar
curl -sX POST "$WHATISUP_API/v1/channels" \
-H "Authorization: Bearer $WHATISUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"support-line"}'curl -s "$WHATISUP_API/v1/channels" \
-H "Authorization: Bearer $WHATISUP_API_KEY"Os nomes são rótulos livres para humanos — não são usados para roteamento ou auth.
Exclusão lógica (soft-delete)
DELETE /v1/channels/:id para a conexão mas mantém a linha para auditoria. Entregas de webhook e eventos de auditoria que referenciam o canal excluído continuam consultáveis. Se você recriar com o mesmo nome depois, ganha um id novinho.
Excluir um canal aqui não desvincula o aparelho do lado do WhatsApp. O usuário continua pareado até o gateway deslogar (o que ele faz na exclusão) ou o usuário desvincular manualmente pela tela de Aparelhos conectados do celular.
Saúde
O gateway roda um heartbeat interno contra todo canal conectado. Se uma conexão fica silenciosa, isso aparece na API como disconnected e o gateway tenta reconectar com backoff. Você verá isso na página de detalhe do canal no dashboard e no seu webhook channel.disconnected — sem ação necessária do seu lado na maioria das vezes.