📖 Visão Geral
A API Think Messenger permite enviar e receber mensagens WhatsApp de forma programática. Integre seu sistema em minutos com nossa API REST simples e segura.
Base URL:
Todos os endpoints retornam JSON. Autenticação é feita via header X-API-Key.
🔐 Autenticação
Todas as requisições à API devem incluir o header X-API-Key com sua chave de API. A chave é gerada automaticamente ao criar sua instância e tem o prefixo tm_.
⚡ Início Rápido
Em 3 passos simples você estará enviando mensagens:
- Crie sua conta — Acesse o registro e crie sua conta.
- Crie uma instância — No dashboard, crie uma nova instância e escaneie o QR Code com seu WhatsApp.
- Envie sua primeira mensagem — Use a API Key da instância para fazer sua primeira chamada:
📱 Criar Instância
Instâncias representam um número WhatsApp conectado. Cada instância possui sua própria API Key, webhooks e configurações independentes.
Passo a passo
- Acesse o Dashboard → Instâncias → Nova Instância
- Defina um nome identificador (ex: "Atendimento", "Vendas")
- Escolha a forma de pagamento (PIX ou Cartão de Crédito)
- Após confirmação de pagamento, a instância será provisionada automaticamente
- Copie sua API Key (exibida apenas uma vez!)
🔗 Conectar WhatsApp
Após criar a instância, conecte seu WhatsApp escaneando o QR Code:
- Na página da instância, clique em "Conectar"
- Um QR Code será gerado na tela
- Abra o WhatsApp no seu celular → Aparelhos Conectados → Conectar Aparelho
- Escaneie o QR Code
- O status mudará para Conectado ✅
Status possíveis da instância:
| Status | Descrição |
|---|---|
connected | WhatsApp conectado e pronto para uso |
connecting | Aguardando escaneamento do QR Code |
disconnected | WhatsApp desconectado |
pending_payment | Aguardando confirmação de pagamento |
💬 Enviar Texto
Envia uma mensagem de texto para um número WhatsApp.
Parâmetros (Body JSON)
| Campo | Tipo | Descrição | |
|---|---|---|---|
phone | string | Obrigatório | Número do destinatário com DDI+DDD (ex: 5511999999999) |
message | string | Obrigatório | Texto da mensagem (máx. 5000 caracteres) |
Exemplo
Resposta de Sucesso 200 OK
📎 Enviar Mídia
Envia imagem, vídeo, áudio ou documento via URL pública.
Parâmetros (Body JSON)
| Campo | Tipo | Descrição | |
|---|---|---|---|
phone | string | Obrigatório | Número com DDI+DDD |
media_url | string | Obrigatório | URL pública do arquivo de mídia |
media_type | string | Obrigatório | image, video, audio ou document |
caption | string | Opcional | Legenda da mídia (máx. 1000 caracteres) |
Exemplos por tipo
Resposta de Sucesso 200 OK
✏️ Editar Mensagem
Edita o conteúdo de uma mensagem já enviada. O destinatário verá a mensagem atualizada com indicação de "editada".
Parâmetros (Body JSON)
| Campo | Tipo | Descrição | |
|---|---|---|---|
phone | string | Obrigatório | Número do destinatário com DDI+DDD |
message_id | string | Obrigatório | ID da mensagem original (retornado no message_id ao enviar) |
message | string | Obrigatório | Novo conteúdo da mensagem (máx. 5000 caracteres) |
Exemplo
Resposta de Sucesso 200 OK
fromMe: true) podem ser editadas. Guarde o message_id retornado ao enviar para usar neste endpoint.🗑️ Apagar Mensagem
Apaga uma mensagem para todos os participantes da conversa. Equivale à ação "Apagar para todos" no WhatsApp.
Parâmetros (Body JSON)
| Campo | Tipo | Descrição | |
|---|---|---|---|
phone | string | Obrigatório | Número do destinatário com DDI+DDD |
message_id | string | Obrigatório | ID da mensagem a apagar |
from_me | boolean | Opcional | Se a mensagem foi enviada pela instância (padrão: true) |
Exemplo
Resposta de Sucesso 200 OK
🔔 Webhooks — Configuração
Webhooks permitem que seu sistema receba notificações em tempo real sobre mensagens e eventos. Configure URLs diferentes para cada tipo de evento no painel da instância.
URLs Configuráveis
| Campo | Evento | Descrição |
|---|---|---|
webhook_url | Fallback geral | URL usada quando não há URL específica para o evento |
webhook_messages_upsert | Mensagem recebida | Disparado quando uma mensagem é recebida na instância |
webhook_send_message | Mensagem enviada | Disparado quando uma mensagem é enviada pela API |
webhook_presence_update | Status de presença | Disparado quando o status online/offline de um contato muda |
webhook_messages_update | Status de entrega/leitura | Disparado quando uma mensagem é entregue (✓✓) ou lida (✓✓ azul) |
webhook_url (fallback). Se nenhum estiver configurado, o evento será descartado silenciosamente.📡 Webhooks — Eventos
Seu endpoint receberá requisições POST com payloads JSON normalizados. Think Messenger abstrai toda a complexidade do provedor subjacente.
Eventos disponíveis
| Evento | Descrição |
|---|---|
message.received | Mensagem recebida de um contato |
message.sent | Confirmação de mensagem enviada |
presence.update | Mudança de status online/offline |
message.status | Status de entrega/leitura da mensagem (entregue, lida, reproduzida) |
📦 Webhooks — Payloads
Mensagem de Texto (recebida)
Imagem recebida
Tipos de mensagem suportados
| type | Campos extras | Descrição |
|---|---|---|
text | — | Mensagem de texto simples |
image | mimetype | Imagem (JPEG, PNG, etc) |
video | mimetype | Vídeo (MP4, etc) |
audio | mimetype, is_voice_note | Áudio ou mensagem de voz |
document | mimetype | Documento (PDF, DOC, etc) |
sticker | — | Figurinha / Sticker |
contact | — | Cartão de contato |
location | latitude, longitude | Localização |
reaction | reacted_message_id | Reação a mensagem |
Payload de Presença
Payload de Status de Mensagem
Valores de status (ack)
| ack | status | Descrição |
|---|---|---|
0 | error | Erro no envio |
1 | server | Mensagem chegou ao servidor WhatsApp |
2 | delivered | ✓✓ Entregue no dispositivo do destinatário |
3 | read | ✓✓ Azul — Mensagem lida pelo destinatário |
4 | played | Áudio ou vídeo reproduzido pelo destinatário |
🔄 Rotação de Chaves
A rotação automática de API Keys garante segurança contínua. A cada 30 dias, uma nova chave é gerada e disponibilizada para seu sistema buscar automaticamente.
Como funciona
- Ative a rotação no painel da instância e configure a URL de webhook de rotação
- A cada 30 dias, o sistema gera uma nova chave e envia uma notificação para seu webhook
- Seu sistema busca a nova chave via endpoint
GET /api/v1/key/rotate - Ao usar a nova chave pela primeira vez, a antiga é revogada automaticamente
- Se a nova chave não for buscada em 5 dias, a rotação expira
Busca a nova chave pendente de rotação. Autentique com a chave atual.
Resposta de Sucesso 200 OK
🚨 Erros
A API utiliza códigos HTTP padrão para indicar sucesso ou falha.
| Código | Significado | Descrição |
|---|---|---|
200 | OK | Requisição processada com sucesso |
401 | Unauthorized | API Key inválida ou ausente |
422 | Unprocessable | Instância não conectada ou parâmetros inválidos |
400 | Bad Request | Rotação de chave desativada |
404 | Not Found | Nenhuma rotação pendente |
410 | Gone | Chave/rotação expirada |
Formato de erro padrão
🏢 Enterprise API
A Enterprise API permite criar e gerenciar instâncias WhatsApp de forma programática. Ideal para plataformas SaaS, integradores e operações de grande escala.
Autenticação
Todas as requisições Enterprise usam o header X-Enterprise-Key com a chave gerada no painel de configurações (prefixo tmek_).
🚀 Criar Instância
Cria uma nova instância WhatsApp e retorna os dados de conexão incluindo QR Code.
Parâmetros (Body JSON)
| Campo | Tipo | Descrição | |
|---|---|---|---|
name | string | Obrigatório | Nome identificador da instância (2-100 caracteres) |
webhook_url | string | Opcional | URL para receber eventos (mensagens, conexão, etc) |
webhook_events | array | Opcional | Eventos desejados: MESSAGES_UPSERT, MESSAGES_UPDATE, SEND_MESSAGE, PRESENCE_UPDATE, CONNECTION_UPDATE |
Exemplo
Resposta de Sucesso 201 Created
api_key retornada é a chave para enviar mensagens via /api/v1/messages/send. Guarde-a — ela é exibida apenas neste momento.GET /api/v1/enterprise/instances/{id} para obter um novo.📋 Listar Instâncias
Lista todas as instâncias da conta Enterprise.
Resposta de Sucesso 200 OK
🔍 Detalhar Instância
Retorna detalhes da instância. Se não estiver conectada, retorna um novo QR Code para conexão.
📲 Renovar QR Code
Solicita um novo QR Code para conectar uma instância ao WhatsApp. Use quando o QR Code anterior expirou ou após desconectar a instância.
Path Parameters
| Campo | Tipo | Descrição | |
|---|---|---|---|
id | integer | Obrigatório | ID da instância |
Exemplo
Resposta de Sucesso 200 OK
Se já conectada 422
🗑️ Remover Instância
Agenda o cancelamento de uma instância. A instância permanece ativa e utilizável até o fim do ciclo de faturamento já pago. A remoção efetiva ocorre na data agendada (cancels_at), e o valor da assinatura recorrente é ajustado automaticamente.
Path Parameters
| Campo | Tipo | Descrição | |
|---|---|---|---|
id | integer | Obrigatório | ID da instância |
Exemplo
Resposta de Sucesso 200 OK
cancels_at (1 dia antes da próxima renovação), garantindo que o cliente utilize o período já pago. A assinatura recorrente é ajustada automaticamente após a remoção efetiva.🔔 Webhook Administrativo
O webhook administrativo é a URL base centralizada para receber eventos de todas as instâncias da sua conta Enterprise. Ele funciona como fallback: se uma instância não tiver webhook próprio configurado, todos os eventos (mensagens, presença, conexão) são enviados para esta URL.
Ao criar instâncias via API sem especificar webhook_url, o webhook admin é automaticamente utilizado como URL padrão.
Configuração
Configure via API ou pelo painel em Configurações → Webhook Administrativo.
Configura a URL do webhook administrativo. Envie null para remover.
Parâmetros (Body JSON)
| Campo | Tipo | Descrição | |
|---|---|---|---|
webhook_url | string | Opcional | URL HTTPS para receber notificações. null para remover. |
Exemplo
Resposta de Sucesso 200 OK
Consulta a configuração atual do webhook administrativo.
Resposta 200 OK
Eventos Recebidos
O webhook admin recebe todos os eventos das instâncias que não possuem webhook próprio, além de notificações de conexão/desconexão de todas as instâncias.
| Evento | Quando é disparado |
|---|---|
message.received | Mensagem recebida em qualquer instância |
message.sent | Mensagem enviada via API em qualquer instância |
presence.update | Mudança de status online/offline de contato |
instance.connected | Uma instância conectou ao WhatsApp (QR Code escaneado com sucesso) |
instance.disconnected | Uma instância perdeu a conexão com o WhatsApp |
Payload — instance.connected
Payload — instance.disconnected
POST /instances/{id}/qrcode e notificar o operador.Resumo de Todos os Endpoints Enterprise
| Método | Endpoint | Descrição |
|---|---|---|
POST | /api/v1/enterprise/instances | Criar nova instância |
GET | /api/v1/enterprise/instances | Listar todas as instâncias |
GET | /api/v1/enterprise/instances/{id} | Detalhar instância (com QR code se desconectada) |
POST | /api/v1/enterprise/instances/{id}/qrcode | Renovar QR Code |
DELETE | /api/v1/enterprise/instances/{id} | Remover instância |
GET | /api/v1/enterprise/webhook | Consultar webhook admin |
PUT | /api/v1/enterprise/webhook | Configurar webhook admin |