POST /send-message
Envia uma mensagem de texto livre via WhatsApp. Só funciona dentro da janela de 24h (o contato precisa ter enviado uma mensagem pra você nas últimas 24 horas).
Pra iniciar conversa ou mandar mensagem proativa fora da janela, use `POST /send-template`.
| Campo | Valor |
|---|---|
| URL | https://api.wevi.chat/functions/v1/send-message |
| Método | POST |
| Auth | Authorization: Bearer wevi_... (API key) |
| Content-Type | application/json |
| Rate limit | 60 req/min por API key |
| Plano necessário | Pro ou Ultra |
Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
connection_id |
string (uuid) | sim | ID da conexão WhatsApp. |
to |
string | sim | Telefone destino (com ou sem +55). |
text |
string | sim | Conteúdo da mensagem. Máximo 4096 caracteres. |
contact_id |
string (uuid) | não | Vincula o envio a um contato. |
idempotency_key |
string | não | Evita duplicação em retries. |
Exemplos
curl -X POST https://api.wevi.chat/functions/v1/send-message \
-H "Authorization: Bearer wevi_abc123..." \
-H "Content-Type: application/json" \
-d '{
"connection_id": "conn-uuid",
"to": "+5511999999999",
"text": "Oi João! Seu pedido foi enviado e chega amanhã. Código de rastreio: BR123456789."
}'
await fetch("https://api.wevi.chat/functions/v1/send-message", {
method: "POST",
headers: {
"Authorization": "Bearer wevi_abc123...",
"Content-Type": "application/json",
},
body: JSON.stringify({
connection_id: "conn-uuid",
to: "+5511999999999",
text: "Oi João! Seu pedido foi enviado e chega amanhã. Código de rastreio: BR123456789.",
}),
});
Resposta
Sucesso (200)
{
"id": "envio-uuid",
"wamid": "wamid.HBgN...",
"status": "sent"
}
Fora da janela de 24h (200, status failed)
Quando o Meta retorna o erro 131047 (fora da janela), nós capturamos e respondemos:
{
"id": "envio-uuid",
"status": "failed",
"error": "Não é possível enviar texto livre fora da janela de 24h. Use um template aprovado."
}
Erros HTTP
| Status | error |
|---|---|
| 400 | connection_id is required, to is required, text is required |
| 401 | Invalid API key |
| 402 | plan_limit_exceeded |
| 404 | Connection not found |
| 429 | Too many requests |
Quando usar
- Resposta a uma conversa em andamento. O contato te mandou mensagem hoje e você quer responder programaticamente (ex: bot externo, integração com helpdesk).
- Confirmações dentro da janela (entrega, pagamento), quando o contato já interagiu.
Pra qualquer outro caso, use /send-template.
Próximo
/send-buttons