A API de WhatsApp continua existindo e não muda. Ela é a camada específica do canal, com o que só o WhatsApp tem. Quem já integrou com ela não precisa migrar.
Esta página explica as regras do contrato. Os três endpoints estão descritos campo a campo, com playground para testar, na referência da API.
O que esta fase ainda não faz
Os tipos aceitos agora sãotext, image, document, audio e video.
SMS não faz parte deste contrato. Ele é de mão única — não tem conta de canal nem conversa — e um contrato cujo remetente é uma conta e cuja regra é responder a conversas existentes não consegue descrevê-lo com honestidade. Ele entra quando essas duas peças existirem.
Listar os canais conectados
É por aqui que se começa: oid de cada conta é o que vai em channel_id no envio.
capabilities descreve o que aquele canal aceita. Vale ler antes de montar o envio: ele é a mesma fonte que o servidor consulta para aceitar ou recusar.
provider_identifier é o identificador na plataforma de origem — o phone_number_id da Meta, por exemplo. Serve para conferência humana; não é o que vai no envio.
Enviar mensagem
string
required
O
id da conta de canal, vindo de GET /v1/channels. É ele que define o canal.string
Identificador do contato na WizeBot. Use este ou
to, nunca os dois.string
Endereço nativo no canal — telefone no WhatsApp, identificador de chat no Telegram.
string
default:"text"
Um de
text, image, document, audio, video.string
Texto da mensagem. Obrigatório quando
type é text.string
URL pública da mídia. Obrigatório nos tipos de mídia.
string
Legenda da mídia, onde o canal a aceita.
string
default:"document"
Nome do arquivo, para
document.string
Seu identificador do envio. Ver Idempotência.
Resposta
As duas formas de destinatário
Porcontact_id o endereço é resolvido pela identidade que o contato tem naquele canal. Um contato que existe na sua base mas nunca falou pelo Telegram não tem endereço de Telegram — e a resposta diz isso, com 422 RECIPIENT_NOT_ON_CHANNEL, em vez de fingir que o contato não existe.
Por to o endereço vai direto ao canal. No WhatsApp o número é normalizado antes de casar com a base, então +55 11 99999-9999 e 5511999999999 levam ao mesmo lugar.
Se o endereço tiver forma inequívoca de outro canal — um
+ de telefone numa conta de Telegram, um @usuario numa conta de WhatsApp — a resposta é 400 CHANNEL_MISMATCH. Uma sequência de dígitos sem sinal não é considerada telefone: identificador de chat do Telegram também é numérico.Quando o canal não faz o que você pediu
Esse status é diferente do400. 400 quer dizer “corrija o pedido”; 422 quer dizer “o pedido está correto e este canal não atende”. O corpo traz o que o canal suporta, para você não precisar consultar a documentação em tempo de execução:
Idempotência
client_message_id é o seu identificador do envio. Duas requisições com o mesmo valor viram um envio só — é o que torna seguro repetir depois de um timeout, sem o destinatário receber a mensagem duas vezes.
Escolha um valor estável e ligado ao seu domínio (o número do pedido, o id da notificação), não um aleatório por tentativa. Sem o campo, cada requisição é um envio novo.
Consultar o status
O
201 do envio diz que a mensagem foi aceita para envio, não que chegou. A entrega se confirma aqui — é o único jeito de saber.Erros
Os códigos e as mensagens de erro são em inglês, como o resto do contrato.

