● API v1.0 — Estável

Documentação da API Zapeou

Integre o WhatsApp no seu sistema, n8n, Typebot ou qualquer ferramenta em minutos. API REST simples, webhooks em tempo real e aquecimento automático de número.

📖 Visão Geral

A API Zapeou é baseada em REST e usa JSON em todas as requisições e respostas. Cada instância (conexão WhatsApp) possui sua própria URL exclusiva e API Key, garantindo isolamento total entre clientes.

🌐
Base URL: https://zapeou.consultacobertura.com.br

Principais recursos

⚡ Quick Start

Em menos de 2 minutos você envia sua primeira mensagem. Siga os passos:

1
Crie sua conta

Acesse zapeou.consultacobertura.com.br e escolha um plano.

2
Crie uma conexão (instância)

No painel, clique em "+ Nova" e dê um nome único (ex: minha-loja). O sistema gera automaticamente a URL e o token.

3
Escaneie o QR Code

Abra o WhatsApp no celular → Aparelhos Conectados → Conectar aparelho.

4
Copie a URL e a API Key

Disponíveis no card da instância no painel. A URL tem o formato:
https://zapeou.consultacobertura.com.br/{userId}/{slug}/api/message/send-text

5
Envie sua primeira mensagem!

Use o exemplo abaixo substituindo os valores:

cURL
curl -X POST https://zapeou.consultacobertura.com.br/5/minha-loja/api/message/send-text \
  -H "Authorization: Bearer SUA_API_KEY_AQUI" \
  -H "Content-Type: application/json" \
  -d '{"number":"5511999990000","text":"Olá! Testando o Zapeou 🚀"}'
Resposta esperada: {"success":true,"message":"Mensagem enviada com sucesso!","data":{...}}

🔐 Autenticação

Todas as requisições à API devem incluir o Token da Instância (API Key) no header Authorization como Bearer Token.

Header
Authorization: Bearer [SUA_API_KEY]
⚠️
Importante: Cada instância tem sua própria API Key. Não use a mesma key em instâncias diferentes. A key é exibida apenas uma vez na criação — se perder, será necessário recriar a instância.

Como obter a API Key

  1. Acesse o painel
  2. Localize a instância desejada
  3. Clique em "Copiar" ao lado do campo API KEY

🔗 URL Única da Instância

Cada instância possui uma URL exclusiva no formato:

Formato
https://zapeou.consultacobertura.com.br/{user_id}/{instance_slug}/api/{endpoint}
ParâmetroDescrição
{user_id} ID numérico do usuário (gerado automaticamente pelo sistema, visível no painel)
{instance_slug} Nome da instância convertido em slug (sem acentos, espaços viram hífens). Ex: minha-loja, vendas-01
💡
Exemplo real: Se seu user_id é 5 e você criou uma instância chamada "Minha Loja", a URL será:
https://zapeou.consultacobertura.com.br/5/minha-loja/api/message/send-text
🔒
Unicidade: O nome da instância deve ser único dentro da sua conta. Dois nomes iguais gerarão o mesmo slug e o sistema bloqueará a criação.

📤 Enviar Mensagem de Texto

POST /{user_id}/{slug}/api/message/send-text

Envia uma mensagem de texto para um número WhatsApp. Suporta aquecimento automático.

Parâmetros do Body (JSON)

CampoTipoDescrição
number Obrigatório string Número destino no formato internacional, somente dígitos. Ex: 5511999990000
text Obrigatório string Conteúdo da mensagem. Suporta emojis e quebras de linha (\n)
Request
{
  "number": "5511999990000",
  "text": "Olá! Sua encomenda foi enviada 📦\nAguarde em casa."
}

Resposta de Sucesso

✓ 200 OK

Response 200
{
  "success": true,
  "message": "Mensagem enviada com sucesso!",
  "data": {
    "message_id": "3EB0A92F7B1C...",
    "to": "5511999990000",
    "instance_name": "minha-loja",
    "instance_slug": "minha-loja",
    "user_id": 5,
    "api_url": "https://zapeou.consultacobertura.com.br/5/minha-loja/api/message/send-text"
  },
  "warmup": null
}
🔥
Com aquecimento ativo: Se a instância tem warmup habilitado, a resposta inclui o objeto warmup com informações do dia atual, limite e quantidade enviada. Quando o limite diário é atingido, a API retorna erro 400 informando que o envio será permitido no dia seguinte.

📨 Envio em Lote (Bulk)

POST /{user_id}/{slug}/api/message/send-bulk

Adiciona múltiplas mensagens à fila de envio com delay configurável entre elas.

Parâmetros do Body (JSON)

CampoTipoDescrição
messages Obrigatório array Array de objetos com number e text
delay_ms Opcional integer Delay em milissegundos entre cada envio. Padrão: 3000 (3s)
Request
{
  "messages": [
    { "number": "5511999990001", "text": "Olá cliente 1!" },
    { "number": "5511999990002", "text": "Olá cliente 2!" },
    { "number": "5511999990003", "text": "Olá cliente 3!" }
  ],
  "delay_ms": 5000
}
Response 200
{
  "success": true,
  "message": "3 mensagem(ens) adicionadas à fila!",
  "data": {
    "queued": 3,
    "instance_name": "minha-loja",
    "instance_slug": "minha-loja",
    "user_id": 5
  }
}
⚠️
Atenção: O envio em lote respeita o limite de aquecimento. Se o warmup estiver ativo e o limite diário for atingido durante o processamento da fila, as mensagens restantes serão enviadas no dia seguinte automaticamente.

📊 Status da Instância

GET /{user_id}/{slug}/api/status

Retorna o status atual da conexão WhatsApp e informações da instância.

cURL
curl https://zapeou.consultacobertura.com.br/5/minha-loja/api/status \
  -H "Authorization: Bearer SUA_API_KEY"
Response 200
{
  "success": true,
  "data": {
    "instance_name": "minha-loja",
    "instance_slug": "minha-loja",
    "user_id": 5,
    "status": "connected",
    "phone_number": "5511988887777",
    "total_sent": 1247,
    "total_received": 892
  }
}

Status possíveis

StatusDescrição
connectedConectado e pronto para enviar/receber mensagens
qr_readyAguardando leitura do QR Code
startingIniciando conexão
disconnectedDesconectado — é necessário reconectar via painel

🔔 Webhooks

Webhooks permitem que o Zapeou notifique seu sistema em tempo real quando eventos ocorrerem (mensagem recebida, enviada, mudança de status, etc).

Como configurar

  1. No painel, clique em "⚙ Detalhes" da instância
  2. Clique em "🔗 Webhook"
  3. Informe a URL do seu endpoint (deve aceitar POST com JSON)
  4. Selecione os eventos que deseja receber
  5. Clique em Salvar
🔐
Segurança: Todo webhook é enviado com o header X-Zapeou-Event identificando o tipo de evento. Valide esse header no seu servidor para garantir que a requisição veio do Zapeou.

Eventos disponíveis

EventoDescrição
message_receivedDisparado quando uma mensagem é recebida na instância
message_sentDisparado após envio bem-sucedido de mensagem
connection_changedDisparado quando o status da conexão muda (connected, disconnected, etc)

Exemplo de Payload

Webhook — Mensagem Recebida
{
  "event": "message_received",
  "instance_id": 42,
  "instance_name": "minha-loja",
  "instance_slug": "minha-loja",
  "user_id": 5,
  "timestamp": "2026-07-02T14:32:10.123Z",
  "data": {
    "from": "5511999990000",
    "text": "Olá, gostaria de saber o preço",
    "type": "text",
    "timestamp": "2026-07-02T14:32:10.123Z"
  }
}
⏱️
Timeout: O webhook tem timeout de 8 segundos. Seu endpoint deve responder com 200 OK rapidamente. Se precisar processar dados pesados, apenas confirme o recebimento e processe em background.

🔥 Aquecimento de Número

O aquecimento (warmup) é um sistema de proteção que aumenta gradualmente o volume de mensagens enviadas por dia, evitando que números novos sejam banidos pelo WhatsApp.

🚨
Por que é essencial? O WhatsApp monitora padrões de envio. Um número que envia 500 mensagens no primeiro dia é banido automaticamente. O aquecimento simula o comportamento natural de um usuário real.

Limites por dia

PeríodoLimite diárioObservação
Dias 1–310 mensagensInício conservador
Dias 4–730 mensagensAumento gradual
Dias 8–1460 mensagensVelocidade moderada
Dias 15–21120 mensagensConsolidação
Dias 22–30250 mensagensQuase ilimitado
Dia 31+IlimitadoUso normal

Como a API responde quando o limite é atingido

Response 400 — Limite Atingido
{
  "success": false,
  "message": "Limite diário de aquecimento atingido (30 msg/dia — Dia 5).",
  "warmup": true
}
🔄
Reset automático: À meia-noite (horário do servidor), o contador é zerado e o limite do próximo dia é aplicado automaticamente. Não é necessário fazer nada.

📋 Respostas da API

Todas as respostas seguem o padrão JSON com os campos:

CampoTipoDescrição
success boolean true se a operação foi bem-sucedida, false caso contrário
message string Mensagem descritiva do resultado
data object Dados retornados pela operação (quando aplicável)
warmup object | null Informações do aquecimento (apenas em envios com warmup ativo)

❌ Códigos de Erro

HTTPCódigoDescrição
400 Requisição inválida (campos faltando, número inválido, limite de warmup atingido)
401 Não autorizado — API Key ausente ou inválida
402 SUSPENDED Conta suspensa por inadimplência
402 OVERDUE Pagamento em atraso há mais de 35 dias
404 Instância não encontrada (URL ou slug incorretos)
429 Muitas requisições — aguarde alguns segundos
500 Erro interno do servidor — tente novamente

📦 Exemplos por Linguagem

Node.js (Fetch)

JavaScript
const response = await fetch(
  'https://zapeou.consultacobertura.com.br/5/minha-loja/api/message/send-text',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${API_KEY}`
    },
    body: JSON.stringify({
      number: '5511999990000',
      text: 'Olá via Node.js!'
    })
  }
);
const data = await response.json();
console.log(data);

Python (requests)

Python
import requests

url = "https://zapeou.consultacobertura.com.br/5/minha-loja/api/message/send-text"
headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}
payload = {
    "number": "5511999990000",
    "text": "Olá via Python!"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

PHP (cURL)

PHP
<?php
$url = 'https://zapeou.consultacobertura.com.br/5/minha-loja/api/message/send-text';
$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
        'Authorization: Bearer ' . $API_KEY
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'number' => '5511999990000',
        'text'   => 'Olá via PHP!'
    ])
]);
$response = curl_exec($ch);
echo $response;

n8n / Typebot

🔌
No n8n: Use o nó HTTP Request
No Typebot: Use o bloco Make HTTP request

Configure:
Method: POST
URL: https://zapeou.consultacobertura.com.br/{user_id}/{slug}/api/message/send-text
Headers: Authorization: Bearer SUA_API_KEY e Content-Type: application/json
Body (JSON): {"number":"{{numero}}","text":"{{mensagem}}"}

❓ Perguntas Frequentes

No painel, cada instância exibe a URL completa pronta para copiar. O formato é https://zapeou.consultacobertura.com.br/{user_id}/{slug}/api/message/send-text. Basta clicar em "Copiar" ao lado do campo "API — URL ÚNICA DA INSTÂNCIA".

Atualmente não é possível renomear. Se precisar de um slug diferente, crie uma nova instância com o nome desejado e remova a antiga.

O banimento depende do comportamento de envio. Recomendamos sempre ativar o aquecimento para números novos e evitar envio de spam. Números usados há mais de 30 dias com volume gradual são muito mais seguros. A API retorna o status do aquecimento em cada resposta.

Sim! Funciona tanto com WhatsApp pessoal quanto Business. Basta escanear o QR Code normalmente.

300 requisições por minuto por IP. Se precisar de mais, entre em contato para um plano enterprise.

Você tem 35 dias de tolerância. Após isso, a API retorna erro 402 com código SUSPENDED ou OVERDUE. Ao regularizar, tudo volta ao normal instantaneamente — sem perda de conexão ou histórico.

Sim! O plano Starter custa apenas R$ 49,90/mês e inclui 1 conexão WhatsApp. Você pode criar a conta, conectar e testar à vontade.

Precisa de ajuda? Entre em contato pelo painel ou envie um email para suporte@zapeou.com

© 2026 Zapeou — API v1.0