Quem já tentou integrar WhatsApp a um sistema conhece o caminho: criar conta de desenvolvedor na Meta, verificar a empresa, esperar aprovação de cada template, pagar por conversa e descobrir que a mensagem que você queria mandar não se encaixa em nenhuma categoria permitida.
A API do Blu é o caminho curto. Você conecta seu número pelo QR code, gera uma chave e passa a enviar mensagens, criar campanhas e ler conversas com chamadas REST comuns. Funciona com o número que você já tem, no WhatsApp normal ou Business, e com qualquer linguagem que faça uma requisição HTTP.
Sua primeira mensagem em 2 minutos
- Entre no Blu e conecte o número pelo QR code, como no WhatsApp Web.
- Em Configurações → API, gere uma chave.
- Faça a chamada:
curl -X POST https://api.blu.direct/v1/messages \
-H "Authorization: Bearer blu_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999990000",
"text": "Oi João, seu pedido sai amanhã pela manhã."
}'
Resposta:
{
"id": "msg_01J7X4Q9K2",
"status": "queued",
"to": "5511999990000",
"from": "5511988880000"
}
Sem template, sem aprovação, sem servidor. O número fica conectado na infraestrutura do Blu e a API fala com ela.
Recursos da API
Tudo que existe no painel do Blu existe na API. Os endpoints principais:
Mensagens
POST /v1/messages envia texto, imagem, documento, áudio, localização
GET /v1/messages/{id} status: queued, sent, delivered, read, failed
GET /v1/chats lista conversas, com filtro de não lidas
GET /v1/chats/{number} histórico de uma conversa
Envio de arquivo:
curl -X POST https://api.blu.direct/v1/messages \
-H "Authorization: Bearer $BLU_TOKEN" \
-F "to=5511999990000" \
-F "caption=Segue o boleto de setembro" \
-F "file=@boleto.pdf"
Campanhas
POST /v1/campaigns cria campanha com lista de contatos e mensagem
GET /v1/campaigns/{id} progresso, entregas, leituras, respostas
POST /v1/campaigns/{id}/pause
POST /v1/campaigns/{id}/resume
Exemplo em Node:
const res = await fetch('https://api.blu.direct/v1/campaigns', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.BLU_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Renovação setembro',
message: 'Oi {{nome}}, sua renovação vence em {{vencimento}}. Renove com 15% de desconto: {{link}}',
contacts: [
{ number: '5511999990000', nome: 'João', vencimento: '20/09', link: 'https://...' },
{ number: '5511988880000', nome: 'Maria', vencimento: '22/09', link: 'https://...' },
],
scheduleAt: '2026-09-15T09:00:00-03:00',
}),
});
O Blu aplica automaticamente o intervalo seguro entre envios. Você não precisa (e não consegue) configurar um ritmo que coloque o número em risco.
Contatos e tags
GET /v1/contacts?tag=lead-quente
POST /v1/contacts
PATCH /v1/contacts/{number} adiciona ou remove tags, atualiza campos
Aquecimento de chip
POST /v1/numbers/{number}/warmup
GET /v1/numbers/{number}/warmup
O aquecimento de chip do Blu controlado por código, para quem gerencia vários números.
Agentes de IA
GET /v1/agents
POST /v1/agents
POST /v1/agents/{id}/attach liga o agente a um número
Os agentes de atendimento do Blu podem ser criados e configurados pela API, útil para agências que montam um agente por cliente.
Webhooks: receba mensagens no seu sistema
Cadastre uma URL e o Blu envia um POST para cada evento:
{
"event": "message.received",
"number": "5511988880000",
"from": "5511999990000",
"name": "João",
"text": "Consigo trocar a data de entrega?",
"timestamp": "2026-09-12T14:32:10-03:00"
}
Eventos disponíveis: message.received, message.delivered, message.read, message.failed, campaign.finished, number.disconnected.
Com isso você monta o que quiser: chatbot próprio, integração com CRM, atualização de pedido, alerta de número desconectado no Slack.
Exemplos de integração
Loja virtual. Webhook do gateway de pagamento → API do Blu envia confirmação com o comprovante em PDF.
CRM. Quando o lead muda para "proposta enviada", o CRM chama a API e dispara o follow-up. Resposta do cliente volta pelo webhook e atualiza o CRM.
Clínica. Cron diário lista consultas do dia seguinte e envia lembrete com botão de confirmação. Respostas "sim" e "não" chegam pelo webhook.
Agência. Um número por cliente, uma chave por número, campanhas criadas por código a partir das planilhas de cada conta.
Agentes de IA. Frameworks como LangChain, OpenAI Agents SDK e Vercel AI SDK chamam a API como uma ferramenta comum. Se você prefere não escrever código de cola, o Blu MCP expõe esses mesmos endpoints como ferramentas prontas para ChatGPT, Claude e Cursor.
Limites, erros e boas práticas
- Rate limit. 60 requisições por minuto por chave. Envio de mensagens tem fila própria com o intervalo seguro do número.
- Idempotência. Envie o header
Idempotency-Keypara evitar mensagem duplicada em caso de retry. - Erros. Respostas com
4xxtrazemcodeemessagelegíveis:number_disconnected,invalid_recipient,daily_limit_reached,insufficient_plan. - Sandbox. Chaves
blu_test_enviam apenas para os números verificados na sua conta. Use em desenvolvimento.
Segurança
- Chaves com escopo. Só leitura, só envio, campanhas, administração. Uma chave por integração.
- Assinatura de webhook. Todo POST vem com o header
X-Blu-Signature(HMAC-SHA256) para você validar a origem. - Limites herdados. A API respeita os mesmos limites de volume do painel. Não existe parâmetro para desligar.
- Histórico. Tudo que sai pela API aparece no histórico do painel com a origem e a chave usada.
- Revogação instantânea. Apagou a chave, a integração para na hora.
API, CLI ou MCP?
| Você quer... | Use |
|---|---|
| Integrar ao seu sistema, CRM, loja ou backend | API do Blu |
| Scripts, cron, CI e agentes de código no terminal | Blu CLI |
| Conversar com ChatGPT, Claude ou Cursor em linguagem natural | Blu MCP |
Os três usam o mesmo número conectado pelo QR code e o mesmo painel.
Quanto custa
A API está incluída em todos os planos pagos do Blu, sem cobrança por mensagem ou por conversa. Os limites de envio e de números são os do seu plano.
Como começar
Estamos liberando o acesso à API em ondas:
Perguntas frequentes
É a API oficial do WhatsApp?
Não. A API do Blu conecta pelo QR code, como o WhatsApp Web, e funciona com o número que você já tem. Não exige conta na Meta, verificação de empresa nem templates aprovados.
Meu número pode ser bloqueado?
O risco é o mesmo do envio pelo painel do Blu. A API não permite ritmo acima do seguro, e para números novos vale o aquecimento de chip.
Tem SDK?
Sim, para Node e Python. Mas a API é REST simples e funciona com qualquer linguagem.
Posso enviar para grupos?
Sim. Use o ID do grupo no campo to. O endpoint GET /v1/groups lista os grupos do número.
Posso conectar vários números na mesma conta?
Sim. Cada número tem seu próprio identificador e você escolhe o remetente com o campo from ou usando uma chave específica por número.
Qual a diferença entre a API e o CLI?
O CLI é construído em cima da API. Se você vai escrever código, use a API. Se vai rodar comandos, scripts ou agentes de código, o CLI é mais rápido.
Falta um endpoint para o seu caso? Conta pra gente.
