📡 API REST — Documentação

Integre o Chatiops com qualquer sistema externo para enviar mensagens via WhatsApp de forma programática.

Índice 1. Autenticação 2. Como gerar o Token 3. Enviar mensagem de texto 4. Enviar mensagem com mídia 5. Campo prioridade 6. Webhook (receber mensagens) 7. Limites e rate limiting 8. Códigos de erro 9. Exemplos de integração 10. API de Dados (Tickets, Contatos) 11. MCP (Model Context Protocol) 12. API Oficial Meta

1. Autenticação

Todas as chamadas à API precisam do header Authorization com um token Bearer.

Authorization: Bearer SEU_TOKEN_AQUI

O token é vinculado a uma conexão WhatsApp específica. Cada conexão tem seu próprio token.

2. Como gerar o Token

1
Acesse o Chatiops e vá em Conexões no menu lateral.
2
Clique na conexão WhatsApp que deseja usar para envio via API.
3
Na tela de API, clique em "Gerar Token". O token será exibido e salvo automaticamente.
4
Copie o token e use no header Authorization: Bearer TOKEN das suas chamadas.
💡
O token não expira. Para revogar, gere um novo token — o anterior será invalidado.

3. Enviar mensagem de texto

POST /api/messages/send

Headers

HeaderValor
AuthorizationBearer SEU_TOKEN
Content-Typeapplication/json

Body (JSON)

CampoTipoObrigatórioDescrição
numberstringNúmero com código do país + DDD. Ex: 5511999999999
bodystringTexto da mensagem
prioritystringbaixa (padrão), media ou alta
closeTicketbooleanSe true, fecha o ticket após enviar

Exemplo

curl -X POST https://api.chatiops.tiops.com.br/api/messages/send \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer SEU_TOKEN" \
  -d '{
    "number": "5511999999999",
    "body": "Olá! Esta é uma mensagem automática.",
    "priority": "baixa"
  }'

Resposta

{ "mensagem": "Mensagem enviada", "queued": true }

4. Enviar mensagem com mídia

POST /api/messages/send

Use multipart/form-data para enviar arquivos (PDF, imagem, áudio, vídeo).

curl -X POST https://api.chatiops.tiops.com.br/api/messages/send \
  -H "Authorization: Bearer SEU_TOKEN" \
  -F "number=5511999999999" \
  -F "body=Confira o arquivo" \
  -F "medias=@/caminho/do/arquivo.pdf"

5. Campo prioridade

ValorDelayUso recomendado
baixa (padrão)1.5 segundosEnvio normal, campanhas, notificações
media0.5 segundosConfirmações, lembretes
altaSem delayConfirmação de agendamento, OTP, alertas urgentes
⚠️
ATENÇÃO: Usar priority: "alta" para envio em massa pode resultar em bloqueio temporário ou permanente do número pelo WhatsApp. Use apenas para mensagens individuais urgentes.

6. Webhook (receber mensagens)

Configure uma URL de webhook na conexão WhatsApp para receber notificações quando mensagens chegarem.

1
Vá em API → Configuração no sistema.
2
Preencha a URL do Webhook (ex: https://seusite.com/webhook).
3
O Chatiops enviará um POST para essa URL a cada mensagem recebida.

Payload do webhook

{
  "event": "message.received",
  "ticket": { "id": 123, "status": "open" },
  "contact": { "name": "João", "number": "5511999999999" },
  "message": { "body": "Olá!", "fromMe": false, "timestamp": "2026-04-17T12:00:00Z" }
}

7. Limites e rate limiting

LimiteValor
Por minuto30 chamadas
Por dia (Starter)20 chamadas
Por dia (PRO)100 chamadas

Headers de resposta indicam o uso:

X-DailyLimit: 100
X-DailyUsed: 15
X-DailyRemaining: 85

8. Códigos de erro

HTTPErroDescrição
200Mensagem enviada com sucesso
400Bad RequestCampos obrigatórios faltando
401UnauthorizedToken inválido ou ausente
429Too Many RequestsLimite de chamadas atingido
500Internal ErrorErro no servidor

9. Exemplos de integração

Node.js

const axios = require('axios');

await axios.post('https://api.chatiops.tiops.com.br/api/messages/send', {
  number: '5511999999999',
  body: 'Olá do Node.js!',
  priority: 'alta'
}, {
  headers: { Authorization: 'Bearer SEU_TOKEN' }
});

Python

import requests

requests.post('https://api.chatiops.tiops.com.br/api/messages/send',
  json={'number': '5511999999999', 'body': 'Olá do Python!', 'priority': 'alta'},
  headers={'Authorization': 'Bearer SEU_TOKEN'}
)

Google Apps Script

function enviarWhatsApp() {
  UrlFetchApp.fetch('https://api.chatiops.tiops.com.br/api/messages/send', {
    method: 'post',
    contentType: 'application/json',
    headers: { Authorization: 'Bearer SEU_TOKEN' },
    payload: JSON.stringify({ number: '5511999999999', body: 'Olá do Google Sheets!' })
  });
}

N8N / Make / Zapier

Use o módulo HTTP Request com:

10. API de Dados (Tickets, Contatos, Métricas)

Além de enviar mensagens, você pode consultar tickets, buscar contatos e ver métricas. Usa o mesmo token.

Listar tickets

GET /api/tickets?status=open&limit=20
Authorization: Bearer SEU_TOKEN

Filtros: status (open, pending, closed), queueId, limit, offset

// Resposta
{
  "tickets": [
    { "id": 672, "status": "open", "contact": { "name": "João", "number": "5511999999999" }, "queue": { "name": "Vendas" } }
  ],
  "count": 15
}

Mensagens de um ticket

GET /api/tickets/672/messages?limit=50
Authorization: Bearer SEU_TOKEN
// Resposta
{
  "ticketId": 672,
  "messages": [
    { "body": "Olá!", "fromMe": false, "createdAt": "2026-05-09T12:00:00Z" },
    { "body": "Como posso ajudar?", "fromMe": true, "createdAt": "2026-05-09T12:01:00Z" }
  ]
}

Responder em um ticket

POST /api/tickets/672/reply
Authorization: Bearer SEU_TOKEN
Content-Type: application/json

{ "body": "Seu pedido foi enviado!" }

Buscar contatos

GET /api/contacts?search=joao&limit=20
Authorization: Bearer SEU_TOKEN

Métricas do dia

GET /api/metrics/summary
Authorization: Bearer SEU_TOKEN

// Resposta
{ "open": 5, "pending": 12, "closedToday": 23, "messagesToday": 156 }

11. MCP (Model Context Protocol)

Conecte qualquer agente de IA compatível com MCP (Claude, Cursor, Windsurf, Cline, Kiro) diretamente ao Chatiops.

URL do MCP Server

https://api.chatiops.tiops.com.br/mcp?token=SEU_TOKEN

Configuração para Claude Desktop

{
  "mcpServers": {
    "chatiops": {
      "url": "https://api.chatiops.tiops.com.br/mcp?token=SEU_TOKEN"
    }
  }
}

Salve em ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows).

Tools disponíveis via MCP

ToolDescrição
send_whatsappEnviar mensagem WhatsApp
list_ticketsListar atendimentos por status
get_ticket_messagesVer histórico de um ticket
reply_ticketResponder em um atendimento
search_contactsBuscar contatos por nome/número
get_metricsMétricas do dia

Exemplo de uso

// No Claude, basta pedir:
"Lista meus atendimentos abertos"
"Faz um resumo do ticket 672"
"Manda um WhatsApp pro 5511999999999 dizendo que o pedido saiu"
"Busca o contato João"

12. API Oficial Meta (WhatsApp Business Platform)

O Chatiops suporta conexão via API Oficial da Meta (Cloud API) — mais estável, sem risco de ban, com templates e botões interativos.

Como configurar

  1. Crie um App em developers.facebook.com
  2. Adicione o produto WhatsApp ao app
  3. Obtenha: Access Token (permanente via System User), Phone Number ID, Business Account ID
  4. No Chatiops: Conexões → Nova → Tipo: "API Oficial Meta"
  5. Preencha as credenciais e salve
  6. Configure o webhook no painel Meta com a URL fornecida pelo Chatiops

Webhook URL

https://api.chatiops.tiops.com.br/webhook/meta/{whatsappId}

Configure esta URL no painel Meta (App → WhatsApp → Configuração → Webhook). Use o Verify Token gerado no Chatiops.

Vantagens da API Oficial

AspectoQR Code (Baileys)API Oficial Meta
EstabilidadeMédiaAlta
Risco de banSimNão
TemplatesNãoSim
Botões interativosNãoSim
CustoGrátisPor conversa (~R$0,15-0,50)
Rate limit~30/min80 msgs/seg

Envio via API (funciona igual)

O endpoint POST /api/messages/send funciona para ambos os tipos de conexão. O Chatiops detecta automaticamente se a conexão é Baileys ou Meta e usa o canal correto.

curl -X POST https://api.chatiops.tiops.com.br/api/messages/send \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer SEU_TOKEN" \
  -d '{"number": "5511999999999", "body": "Olá via API Oficial!", "priority": "alta"}'

Custos Meta (referência Brasil)

TipoCusto/conversaQuando
ServiçoGrátis (1000/mês)Cliente inicia a conversa
Utilidade~R$ 0,15Confirmações, lembretes
Autenticação~R$ 0,14OTP, verificação
Marketing~R$ 0,50Promoções, campanhas