Enviar mensagens
Como enviar texto, imagem, áudio/voz, vídeo, documento, localização, contato, botões, lista, enquete, reação e "digitando…" pela WhatsApp API da Rollin Host.
Todo envio é uma requisição POST para a sua URL base, com o header token (sua chave) e um corpo em JSON. Os exemplos usam curl, mas valem para qualquer linguagem, n8n ou Make — muda só a forma de montar a requisição.
Campos opcionais úteis (servem em quase todos os envios)
| Campo | Tipo | O que faz |
|---|---|---|
delay | número (ms) | espera antes de enviar, mostrando “digitando…” (ex.: 2000 = 2s). Deixa mais humano. |
replyid | texto | responde citando outra mensagem (use o id dela) |
readchat | booleano | marca a conversa como lida ao enviar |
mentions | texto | números a mencionar, separados por vírgula |
Texto
POST /send/text
curl -X POST https://rollin.uazapi.com/send/text \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"text": "Olá! Como posso ajudar?"
}' curl -X POST https://rollin.uazapi.com/send/text \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"text": "Confira nosso site! https://exemplo.com",
"linkPreview": true,
"delay": 2000
}' A resposta traz, entre outros campos, o id e o messageid (id da mensagem no WhatsApp) e o status (Sent, Delivered, Read…). Guarde o id se quiser depois responder ou reagir a essa mensagem.
Imagem, vídeo, áudio, voz e documento
Tudo isso usa o mesmo endpoint — POST /send/media — mudando o campo type:
type | O que é | Dica |
|---|---|---|
image | imagem | JPG/PNG; legenda no campo text |
video | vídeo | MP4; legenda no campo text |
document | documento (PDF, DOCX, XLSX…) | use docName para o nome do arquivo |
audio | áudio normal (toca como música) | MP3 ou OGG |
ptt | mensagem de voz (aquela “gravadinha”) | OGG/MP3 |
sticker | figurinha | imagem |
O arquivo vai no campo file, que aceita uma URL pública ou o conteúdo em base64.
curl -X POST https://rollin.uazapi.com/send/media \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"type": "image",
"file": "https://exemplo.com/foto.jpg",
"text": "Olha que novidade!"
}' curl -X POST https://rollin.uazapi.com/send/media \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"type": "ptt",
"file": "https://exemplo.com/audio.ogg"
}' curl -X POST https://rollin.uazapi.com/send/media \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"type": "document",
"file": "https://exemplo.com/contrato.pdf",
"docName": "Contrato.pdf",
"text": "Segue o documento solicitado"
}' curl -X POST https://rollin.uazapi.com/send/media \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"type": "video",
"file": "https://exemplo.com/video.mp4",
"text": "Confira este vídeo!"
}' Botões, lista e enquete
Mensagens interativas usam um endpoint só — POST /send/menu — mudando o campo type (button, list ou poll). As opções vão no array choices, num formato de texto que muda conforme o tipo.
Botões
Cada item de choices é um botão. Use | para separar o texto do “valor”:
- Resposta rápida:
"Suporte|suporte"(ao tocar, devolve o idsuporte) - Abrir site:
"Nosso site|https://exemplo.com" - Ligar:
"Falar conosco|call:+5511999999999" - Copiar código:
"Copiar cupom|copy:DESCONTO10"
curl -X POST https://rollin.uazapi.com/send/menu \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"type": "button",
"text": "Como podemos ajudar?",
"choices": [
"Suporte Técnico|suporte",
"Fazer Pedido|pedido",
"Nosso Site|https://exemplo.com"
],
"footerText": "Escolha uma opção"
}'
Lista
Em lista, choices tem seções e itens:
"[Nome da Seção]"começa uma seção"texto|id|descrição"é um item (id e descrição são opcionais)
curl -X POST https://rollin.uazapi.com/send/menu \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"type": "list",
"text": "Catálogo de Produtos",
"choices": [
"[Eletrônicos]",
"Smartphones|phones|Últimos lançamentos",
"Notebooks|notes|Modelos 2024",
"[Acessórios]",
"Fones|fones|Bluetooth e com fio"
],
"listButton": "Ver Catálogo",
"footerText": "Preços sujeitos a alteração"
}'
Enquete (poll)
Cada item de choices é uma opção de voto. selectableCount define quantas o usuário pode marcar (1 = escolha única):
curl -X POST https://rollin.uazapi.com/send/menu \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"type": "poll",
"text": "Qual horário você prefere?",
"choices": ["Manhã (8h-12h)", "Tarde (13h-17h)", "Noite (18h-22h)"],
"selectableCount": 1
}'
Localização
POST /send/location
curl -X POST https://rollin.uazapi.com/send/location \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"name": "Maracanã",
"address": "Av. Pres. Castelo Branco - Rio de Janeiro - RJ",
"latitude": -22.912982,
"longitude": -43.230281
}'
latitude e longitude são obrigatórios; name e address são opcionais.
Contato (cartão de visita)
POST /send/contact
curl -X POST https://rollin.uazapi.com/send/contact \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"fullName": "João Silva",
"phoneNumber": "5511988887777",
"organization": "Empresa XYZ",
"email": "joao@empresa.com"
}'
Para enviar vários telefones no mesmo contato, separe por vírgula em phoneNumber: "5511988887777,5511955554444".
Reagir a uma mensagem (emoji)
POST /message/react — use o id da mensagem que você quer reagir (vem nos webhooks de mensagens recebidas):
curl -X POST https://rollin.uazapi.com/message/react \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999@s.whatsapp.net",
"id": "3EB0538DA65A59F6D8A251",
"text": "👍"
}'
Para remover a reação, mande text vazio (""). Só dá pra reagir a mensagens de até 7 dias.
Mostrar “digitando…” ou “gravando áudio…”
POST /message/presence — útil pra dar aquele tempo humano antes de responder:
curl -X POST https://rollin.uazapi.com/message/presence \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{
"number": "5511999999999",
"presence": "composing",
"delay": 3000
}'
composing= digitando ·recording= gravando áudio ·paused= parardelayem milissegundos (máx. 5 minutos). É cancelado automaticamente quando você envia a mensagem.
Verificar se um número tem WhatsApp
POST /chat/check — antes de disparar, confira se o número existe no WhatsApp (evita erro e protege a reputação):
curl -X POST https://rollin.uazapi.com/chat/check \
-H "Content-Type: application/json" \
-H "token: SEU_TOKEN" \
-d '{ "numbers": ["5511999999999", "5511888887777"] }'
A resposta é uma lista; cada item traz isInWhatsapp (true/false) e o jid correto pra usar nos envios.
Erros comuns
| Erro | O que significa | Solução |
|---|---|---|
401 / não autorizado | token errado ou incompleto | copie o token de novo no painel |
400 “número inválido” | formato do number errado | use 5511999999999, sem +/espaços |
500 com erro 463 | WhatsApp restringiu o número temporariamente | reduza o volume; aqueça o número; use conta Business |
| mídia não envia | URL não é pública / arquivo grande | use URL acessível ou base64; reduza o tamanho |
Próximos passos
Última atualização: