Skip to content
WhatIsUp.dev

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.

Pareamento único por número de telefone — o mesmo fluxo do WhatsApp Web.

Ciclo de vida

Os canais passam por um pequeno conjunto de estados que a API expõe pelo campo status:

StatusSignificado
pendingCanal criado. A conexão ainda não começou — busque um QR para iniciar.
qrUm código QR está pronto; mostre-o para o usuário escanear.
connectingHandshake em andamento (pós-scan ou pós-reconexão).
connectedOnline. Você pode enviar e receber mensagens.
disconnectedCaiu. O gateway vai tentar reconectar automaticamente.
failedReset manual necessário (revogado, banido, ou falha repetida de reconexão).
Máquina de estados do canal — toda transição é um evento tipado ao qual você pode reagir.

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.