Canais e capacidades
O que cada conexão consegue fazer, e como perguntar antes de tentar.
A API é unificada; os canais não são. Um envia modelo aprovado, outro não; um confirma leitura, outro nem entrega. A matriz de capacidades é como você descobre isso sem tentar.
A matriz de capacidades
| Recurso | WhatsApp oficial | WhatsApp pareado | Chat do site | Messenger | ||
|---|---|---|---|---|---|---|
| Texto | ✓ | ✓ | ✓ | — | — | — |
| Imagem | ✓ | ✓ | — | — | — | — |
| Vídeo | ✓ | ✓ | — | — | — | — |
| Áudio | ✓ | ✓ | — | — | — | — |
| Documento | ✓ | ✓ | — | — | — | — |
| Modelo aprovado | ✓ | — | — | — | — | — |
| Botões | — | — | — | — | — | — |
| Localização | — | — | — | — | — | — |
| Recibo de entrega | ✓ | ✓ | ✓ | — | — | — |
| Recibo de leitura | ✓ | ✓ | — | — | — | — |
| Janela de atendimento | ✓ | — | — | — | — | — |
Instagram, Messenger e e-mail aparecem com tudo em —: eles existem no modelo para que conectá-los depois não exija mudança de contrato, e hoje não têm adaptador de envio. A tabela diz isso em vez de prometer texto e falhar na primeira chamada.
O chat do site troca só texto, nos dois sentidos: o widget não envia anexo, e uma mídia mandada pelo painel não aparece para o visitante.
POST /v1/messages onde a matriz diz que o canal os transporta — a mídia com um anexo subido antes em POST /v1/uploads (ver Anexos e mídia). Modelo aprovado é a exceção: mesmo marcado no WhatsApp oficial, ele ainda volta 422 unsupported_message_type pela API. Quando isso mudar, entra no changelog.Como perguntar
curl https://api.amivu.com.br/v1/channels \
-H "Authorization: Bearer $AMIVU_API_KEY"
{
"object": "channel",
"id": "chn_01K7ZFA5X8Q2M4N6P8R0T2V4W6",
"name": "WhatsApp Comercial",
"type": "whatsapp",
"provider": "meta",
"status": "connected",
"display_number": "+55 15 99110-5435",
"capabilities": {
"text": true,
"image": true,
"template": true,
"buttons": false,
"delivery_receipts": true,
"read_receipts": true,
"session_window": true
}
}
capabilities.template — não deduza pelo type. É exatamente para isso que este campo existe.WhatsApp são dois
O provider distingue duas conexões que se chamam “WhatsApp” e não são a mesma coisa:
meta— a Cloud API oficial. Tem modelo aprovado e a janela de 24 horas fora da qual só modelo passa.whatsapp_web— uma sessão pareada por QR Code. Manda texto e mídia, não tem modelo e não tem janela.
Tratar os dois como iguais é o erro que mais custa aqui: um código que mande type: "template" sem olhar o provedor funciona num cliente e falha no vizinho.
status também importa. Um canal disconnected recusa envio com 422 channel_not_connected — e o caminho de volta é o painel, não uma retentativa.
Escrevemos sobre operação de atendimento, canais e IA no blog da Amivu.