Vindo do wuzapi
O whatsapi roda wuzapi por baixo, então nada do que você já sabe está errado. Só não é mais a superfície que você toca. Aqui está a tabela de tradução.
Mesmo gateway, contrato diferente
| POST /send/text {Phone, Body} | POST /v1/messages {to, text} |
| POST /session/qr | POST /v1/numbers/:id/pair {mode: "qr"} |
| POST /session/pairphone | POST /v1/numbers/:id/pair {mode: "code", phone} |
| GET /user/check | GET /v1/numbers/check/:phone |
| POST /send/image|video|audio|document | POST /v1/messages/image|video|audio|document |
| webhooks: 13 raw PascalCase events | PUT /v1/webhooks: 7 eventos normalizados e assinados |
| token header per instance | Authorization: Bearer wa_… (uma chave, todos os números) |
O que você deixa de fazer
Id de sessão por telefone, header token e payload em PascalCase somem. A chave é dona da conta, e conta com um número só nem manda from. O 500 de already connected, que no wuzapi significava três coisas diferentes, já vem resolvido: conectado é um status, cooldown é um 429 com Retry-After, e qualquer outra coisa é um 502.
antes
POST wa.whatsapi.sh:8001/send/text
token: <instance token>
{ "Phone": "5511988887777", "Body": "hi" }depois
POST api.whatsapi.sh/v1/messages
Authorization: Bearer wa_…
{ "to": "+5511988887777", "text": "hi" }