Canais
Canais são as conexões de WhatsApp na sua conta. O ciclo de vida completo está em Conceitos → Canais; esta página cobre o formato na rede (wire shape).
Listar canais
Retorna todos os canais do cliente autenticado, os mais recentes primeiro. Canais com exclusão lógica (soft-delete) são excluídos.
curl -s "$WHATISUP_API/v1/channels" \
-H "Authorization: Bearer $WHATISUP_API_KEY"{
"data": [
{
"id": "inst_01J7...",
"customer_id": "cust_01J6...",
"name": "primary",
"phone_number": "5511999999999",
"status": "connected",
"last_seen_at": "2026-05-01T12:34:56.000Z",
"metadata": {},
"created_at": "2026-04-12T08:11:32.000Z",
"updated_at": "2026-05-01T12:34:56.000Z"
}
]
}Criar canal
| Field | Type | Required | Notes |
|---|---|---|---|
| name | string | required | |
| metadata | object | optional |
curl -sX POST "$WHATISUP_API/v1/channels" \
-H "Authorization: Bearer $WHATISUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"support-line","metadata":{"team":"support"}}'A resposta é um objeto Channel. O status começa em pending — a conexão de WhatsApp ainda não foi alocada. Busque o QR para iniciar uma.
| Field | Type | Required | Notes |
|---|---|---|---|
| id | string · uuid | required | |
| customer_id | string · uuid | required | |
| name | string | required | |
| phone_number | string | required · nullable | |
| status | `pending` \| `qr` \| `connecting` \| `reconnecting` \| `connected` \| `disconnected` \| `logged_out` \| `stopped_by_user` \| `disabled_by_admin` \| `error` \| `failed` | required | |
| last_seen_at | string · ISO 8601 | required · nullable | |
| metadata | object | required | |
| created_at | string · ISO 8601 | required | |
| updated_at | string · ISO 8601 | required |
Obter um canal
Retorna o canal único. Dá 404 para canais que pertencem a outro cliente (nunca vazamos um 403 de "tenant errado"; ambos parecem "not found").
Obter o QR atual
Inicia preguiçosamente a conexão de WhatsApp se não houver uma rodando, então aguarda até ~10s por um QR. Retorna data:image/png;base64,… mais a string crua em formato de rede (útil se você quiser renderizar com sua própria biblioteca de QR) e um expires_at.
{
"qr": "data:image/png;base64,iVBORw0KGgo...",
"raw": "2@dPBI4Tg9Mc...,vlD4Pmkr...",
"expires_at": "2026-05-01T12:35:25.000Z"
}O fluxo Pair do dashboard usa SSE no lugar — ele recebe o QR empurrado sem polling.
Exclusão lógica (soft-delete)
Para o socket, limpa o auth-state, marca a linha como excluída. Entregas de webhook que referenciaram este canal continuam consultáveis para forense.
curl -sX DELETE "$WHATISUP_API/v1/channels/inst_01J..." \
-H "Authorization: Bearer $WHATISUP_API_KEY"Retorna 204 No Content.