Documentação da API
API REST pública do Abacato AI para integrar seus próprios sistemas ao WhatsApp.
Com a API pública você envia mensagens de WhatsApp (texto e template), lista os contatos importados e consulta o status da conexão do número — tudo autenticado por uma chave de API criada no painel. A especificação legível por máquina está disponível em openapi.yaml.
Última atualização: 2026-07-08 · versão 1.0.0
Primeiros passos
Base URL
https://api.abacato.vps.aprendendoai.com
Todas as requisições usam Content-Type: application/json e retornam JSON.
Envios bem-sucedidos retornam 201; consultas retornam 200.
Autenticação
Toda requisição é autenticada por uma chave de API enviada no cabeçalho
X-API-Key. Crie e gerencie suas chaves no painel do Abacato AI em
Configurações → Chaves de API. A chave completa é exibida
uma única vez, no momento da criação — guarde-a com segurança.
X-API-Key: ak_live_xxxxxxxxxxxxxxxxxxxxxxxx
Referência de endpoints
Todos os caminhos são relativos à Base URL e ficam sob /api/v1/public.
Todos exigem o cabeçalho X-API-Key.
| Método | Caminho | Descrição |
|---|---|---|
| POST | /api/v1/public/messages/text | Envia uma mensagem de texto |
| POST | /api/v1/public/messages/template | Envia uma mensagem de template aprovado |
| GET | /api/v1/public/contacts | Lista os contatos importados |
| GET | /api/v1/public/whatsapp/status | Consulta o status da conta de WhatsApp |
Enviar uma mensagem de texto
Parâmetros do corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
to | string | sim | Número do destinatário, apenas dígitos (E.164). Ex.: 5511888888888 |
text | string | sim | Corpo da mensagem, até 4096 caracteres |
Requisição
# envia um texto simples
curl -X POST https://api.abacato.vps.aprendendoai.com/api/v1/public/messages/text \
-H "X-API-Key: ak_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"to": "5511888888888",
"text": "Olá! Essa é uma mensagem de teste."
}'
Resposta 201
{
"message": {
"id": "9f1c2d3e-...",
"direction": "outbound",
"recipientNumber": "5511888888888",
"messageType": "text",
"content": "Olá! Essa é uma mensagem de teste.",
"wamid": "wamid.HBg...",
"status": "sent",
"sentAt": "2026-07-08T14:00:00.000Z"
}
}
Enviar uma mensagem de template
Templates podem ser enviados a qualquer momento (fora da janela de 24h de atendimento). O template precisa já estar aprovado na conta de WhatsApp Business.
Parâmetros do corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
to | string | sim | Número do destinatário, apenas dígitos (E.164) |
templateName | string | sim | Nome do template aprovado. Ex.: pedido_atualizado |
language | string | não | Código de idioma do template (padrão pt_BR) |
components | array | não | Componentes do template para preencher variáveis (formato Meta) |
Requisição
curl -X POST https://api.abacato.vps.aprendendoai.com/api/v1/public/messages/template \
-H "X-API-Key: ak_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"to": "5511888888888",
"templateName": "pedido_atualizado",
"language": "pt_BR",
"components": [
{ "type": "body",
"parameters": [ { "type": "text", "text": "#1234" } ] }
]
}'
Resposta 201
{
"message": {
"id": "9f1c2d3e-...",
"direction": "outbound",
"recipientNumber": "5511888888888",
"messageType": "template",
"templateName": "pedido_atualizado",
"wamid": "wamid.HBg...",
"status": "sent",
"sentAt": "2026-07-08T14:00:00.000Z"
}
}
Listar contatos importados
Parâmetros de query
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
page | integer | 1 | Página da listagem |
limit | integer | 50 | Itens por página (máx. 100) |
search | string | — | Filtra por nome ou número do contato |
Requisição
curl "https://api.abacato.vps.aprendendoai.com/api/v1/public/contacts?page=1&limit=50" \
-H "X-API-Key: ak_live_xxx"
Resposta 200
{
"contacts": [
{
"id": "3a2b1c...",
"phoneNumber": "5511888888888",
"name": "Maria Silva",
"createdAt": "2026-07-01T10:00:00.000Z",
"updatedAt": "2026-07-01T10:00:00.000Z"
}
],
"total": 128,
"page": 1,
"limit": 50
}
Status da conta de WhatsApp
Retorna a conta de WhatsApp ativa, ou null se nenhuma estiver conectada.
Requisição
curl https://api.abacato.vps.aprendendoai.com/api/v1/public/whatsapp/status \
-H "X-API-Key: ak_live_xxx"
Resposta 200
{
"account": {
"id": "7d6e5f...",
"provider": "meta_cloud",
"displayName": "Minha Empresa",
"displayPhoneNumber": "+55 11 99999-9999",
"qualityRating": "GREEN",
"isCoex": true,
"status": "active",
"connectedAt": "2026-07-08T12:00:00.000Z"
}
}
Limites de taxa
Cada chave de API pode fazer até 1000 requisições a cada 15 minutos.
Ao exceder, a API retorna 429 Too Many Requests — aguarde e tente novamente.
Erros
Erros retornam um corpo JSON no formato { "error": "descrição" }.
| Status | Significado | Quando acontece |
|---|---|---|
400 | Bad Request | Corpo inválido ou campos obrigatórios ausentes |
401 | Unauthorized | Chave de API ausente, inválida ou revogada |
429 | Too Many Requests | Limite de taxa excedido (1000 req / 15 min por chave) |
{
"error": "Missing, invalid, or revoked API key"
}