Wafly › Tutoriais › Enviar mensagem por API
Como enviar mensagem de WhatsApp por API
send-text da instância com o header Client-Token e o JSON {phone, message} — o phone com DDI+DDD (ex.: 5511999999999). A resposta retorna o messageId. Exemplos em curl, Node.js e Python abaixo.Enviar uma mensagem de WhatsApp por API se resume a um POST com três credenciais. Este tutorial mostra o request completo em curl, Node.js e Python, o formato correto do campo phone (número, grupo e canal) e os parâmetros opcionais que valem conhecer.
O que você precisa antes
- Uma instância WhatsApp conectada (na Wafly: criar conta → criar instância → escanear QR, ~2 minutos).
- As credenciais dela:
Client-Token(header),instanceetoken(ambos na URL).
Base URL: https://wafly.com.br/api-bridge-whats
curl
curl -X POST "https://wafly.com.br/api-bridge-whats/instances/SUA_INSTANCIA/token/SEU_TOKEN/send-text" \
-H "Client-Token: SEU_CLIENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "phone": "5511999999999", "message": "Olá! Enviado via API." }'
Resposta de sucesso:
{ "value": true, "messageId": "3EB0XXXX" }
Guarde o messageId — ele serve para responder (reply), editar e apagar a mensagem depois.
Node.js
Sem dependências — fetch é nativo do Node 18+:
const res = await fetch(
"https://wafly.com.br/api-bridge-whats/instances/SUA_INSTANCIA/token/SEU_TOKEN/send-text",
{
method: "POST",
headers: {
"Client-Token": "SEU_CLIENT_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
phone: "5511999999999",
message: "Olá! Enviado via API.",
}),
}
);
console.log(await res.json()); // { value: true, messageId: "3EB0XXXX" }
Python
import requests
resp = requests.post(
"https://wafly.com.br/api-bridge-whats/instances/SUA_INSTANCIA/token/SEU_TOKEN/send-text",
headers={"Client-Token": "SEU_CLIENT_TOKEN"},
json={"phone": "5511999999999", "message": "Olá! Enviado via API."},
)
print(resp.json())
O formato do campo phone
| Destinatário | Formato | Exemplo |
|---|---|---|
| Número privado | DDI + DDD + número, só dígitos | 5511999999999 |
| Grupo | ID do grupo + -group | 120363XXXX-group |
| Newsletter / canal | ID + @newsletter | abcd1234@newsletter |
O erro mais comum é mandar o número com +, espaços ou sem DDI. É sempre só dígitos: 55 + DDD + número.
Parâmetros opcionais que valem conhecer
delayMessage— espera em milissegundos antes de enviar, simulando digitação (ex.:1500). Deixa o bot menos robótico.messageId— responde (reply) a uma mensagem existente.editMessageId— edita o conteúdo de uma mensagem sua já enviada.mentioned— lista de números mencionados (apenas em grupos).
Além de texto, os mesmos padrões de URL cobrem imagem, áudio, vídeo, documento, enquete, botões e carrossel — endpoints send-image, send-audio etc. na documentação completa.
Uma honestidade sobre volume
Nenhuma API — gerenciada ou self-host — elimina o risco de banimento: ele depende do seu uso (volume, opt-in dos destinatários, taxa de bloqueio). Aqueça números novos gradualmente e só mande mensagem pra quem espera recebê-la. Quem promete "zero ban" está vendendo ilusão; explicamos o risco sem eufemismo aqui.
Rode esses exemplos agora
3 dias grátis, sem cartão. Credenciais na tela da instância — copie e cole nos snippets acima.
Criar instância grátisPerguntas frequentes
Como enviar para um grupo?
Use o ID do grupo com sufixo -group no campo phone. O resto do payload é idêntico.
Tem limite de mensagens?
Na Wafly, não — plano por instância com envios ilimitados. Mas respeite boas práticas de volume: o limite real é a política anti-spam do próprio WhatsApp.
Preciso da API oficial da Meta?
Depende do caso. Por instância: preço fixo, QR code, sem template. Oficial: por mensagem, templates aprovados, recomendada para operação crítica de alto volume. Comparamos as duas aqui.
E para receber mensagens?
Configure o webhook de recebidas da instância — tutorial completo aqui.
Continue
Payloads e endpoints verificados em julho/2026. Encontrou algo impreciso? Fale com a gente que corrigimos.