Documentação completa dos endpoints para gerenciar instâncias WhatsApp.
Uma instância representa uma conexão individual com o WhatsApp. Cada instância mantém sua própria sessão, autenticação e configurações independentes.
Importante: A maioria das rotas identifica a instância automaticamente através do header apikey (token da instância). Apenas rotas administrativas usam :instanceId na URL e exigem a GLOBAL_API_KEY configurada no ambiente.
POST /instance/create- Criar nova instânciaGET /instance/all- Listar todas as instânciasGET /instance/info/:instanceId- Informações da instânciaDELETE /instance/delete/:instanceId- Deletar instância
POST /instance/connect- Conectar via QR CodeGET /instance/qr- Obter QR CodePOST /instance/pair- Conectar via código de pareamentoGET /instance/status- Status da conexãoPOST /instance/disconnect- DesconectarPOST /instance/reconnect- ReconectarDELETE /instance/logout- Fazer logout
POST /instance/proxy/:instanceId- Configurar proxyDELETE /instance/proxy/:instanceId- Remover proxyPOST /instance/forcereconnect/:instanceId- Forçar reconexãoGET /instance/logs/:instanceId- Obter logsGET /instance/:instanceId/advanced-settings- Configurações avançadasPUT /instance/:instanceId/advanced-settings- Atualizar configurações
Cria uma nova instância WhatsApp.
POST /instance/create
Content-Type: application/json
apikey: SUA-GLOBAL-API-KEY
GLOBAL_API_KEY (variável de ambiente), não o token da instância.
{
"name": "vendas",
"token": "token-seguro-unico",
"webhook": "https://seu-servidor.com/webhook",
"webhookEvents": ["messages.upsert", "connection.update"],
"proxy": {
"host": "proxy.exemplo.com",
"port": "8080",
"username": "usuario",
"password": "senha"
}
}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | ✅ Sim | Nome único da instância |
| token | string | ✅ Sim | Token de autenticação da instância |
| webhook | string | ❌ Não | URL para receber webhooks |
| webhookEvents | array | ❌ Não | Eventos específicos para webhook |
| proxy | object | ❌ Não | Configuração de proxy |
{
"message": "success",
"data": {
"name": "vendas",
"token": "token-seguro-unico",
"webhook": "https://seu-servidor.com/webhook",
"status": "created",
"createdAt": "2025-01-15T10:30:00Z"
}
}{
"error": "name is required"
}curl -X POST http://localhost:4000/instance/create -H "Content-Type: application/json" -H "apikey: SUA-CHAVE-API" -d '{
"name": "vendas",
"token": "meu-token-seguro"
}'Inicia o processo de conexão via QR Code.
POST /instance/connect
Content-Type: application/json
apikey: TOKEN-DA-INSTANCIA
token que você definiu ao criar a instância, NÃO a GLOBAL_API_KEY.
{
"webhookUrl": "https://seu-servidor.com/webhook",
"subscribe": ["messages.upsert", "connection.update"]
}{
"message": "success",
"data": {
"jid": "5511999999999@s.whatsapp.net",
"webhookUrl": "https://seu-servidor.com/webhook",
"eventString": "messages.upsert,connection.update"
}
}curl -X POST http://localhost:4000/instance/connect \
-H "Content-Type: application/json" \
-H "apikey: token-da-instancia-vendas" \
-d '{
"webhookUrl": "https://seu-servidor.com/webhook",
"subscribe": ["messages.upsert"]
}'Retorna o QR Code para escanear com WhatsApp.
GET /instance/qr
apikey: TOKEN-DA-INSTANCIA
Importante: A instância é identificada automaticamente pelo token no header.
{
"message": "success",
"data": {
"qrcode": "2@abcd1234...",
"code": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..."
}
}curl "http://localhost:4000/instance/qr" \
-H "apikey: token-da-instancia-vendas"Conecta usando código de 8 dígitos em vez de QR Code.
POST /instance/pair
Content-Type: application/json
apikey: TOKEN-DA-INSTANCIA
{
"phone": "5511999999999"
}{
"message": "success",
"data": {
"code": "12345678"
}
}- Faça a requisição com seu número
- Receba o código de 8 dígitos
- No WhatsApp: Aparelhos conectados > Conectar dispositivo > Conectar com número de telefone
- Digite o código recebido
curl -X POST http://localhost:4000/instance/pair \
-H "Content-Type: application/json" \
-H "apikey: token-da-instancia-vendas" \
-d '{"phone": "5511999999999"}'Verifica o status atual da instância.
GET /instance/status
apikey: TOKEN-DA-INSTANCIA
{
"message": "success",
"data": {
"connected": true,
"loggedIn": true,
"name": "Minha Empresa",
"myJid": "5511999999999@s.whatsapp.net"
}
}connected: false, loggedIn: false- Instância criada mas não conectadaconnected: true, loggedIn: false- Conectando (aguardando QR Code)connected: true, loggedIn: true- Conectado e ativoconnected: false, loggedIn: true- Sessão válida mas desconectado temporariamente
curl "http://localhost:4000/instance/status" \
-H "apikey: token-da-instancia-vendas"Retorna todas as instâncias cadastradas.
GET /instance/all
apikey: SUA-GLOBAL-API-KEY
GLOBAL_API_KEY (administrativa).
{
"message": "success",
"data": [
{
"id": "abc123",
"name": "vendas",
"connected": true,
"jid": "5511999999999@s.whatsapp.net"
},
{
"id": "def456",
"name": "suporte",
"connected": false,
"jid": null
}
]
}curl "http://localhost:4000/instance/all" \
-H "apikey: SUA-GLOBAL-API-KEY"Obtém informações detalhadas de uma instância específica.
GET /instance/info/:instanceId
apikey: SUA-GLOBAL-API-KEY
GLOBAL_API_KEY (administrativa) e o ID da instância no path.
{
"message": "success",
"data": {
"id": "abc123",
"name": "vendas",
"token": "token-seguro",
"webhook": "https://seu-servidor.com/webhook",
"events": "messages.upsert,connection.update",
"connected": true,
"jid": "5511999999999@s.whatsapp.net",
"createdAt": "2025-01-15T10:30:00Z"
}
}curl "http://localhost:4000/instance/info/vendas" \
-H "apikey: SUA-GLOBAL-API-KEY"Desconecta a instância mas mantém os dados.
POST /instance/disconnect
apikey: TOKEN-DA-INSTANCIA
{}Nota: O body pode ser vazio. A instância é identificada pelo header apikey.
{
"message": "success"
}curl -X POST http://localhost:4000/instance/disconnect \
-H "Content-Type: application/json" \
-H "apikey: token-da-instancia-vendas" \
-d '{}'Reconecta uma instância desconectada.
POST /instance/reconnect
apikey: TOKEN-DA-INSTANCIA
{}{
"message": "success"
}curl -X POST http://localhost:4000/instance/reconnect \
-H "Content-Type: application/json" \
-H "apikey: token-da-instancia-vendas" \
-d '{}'Faz logout completo, removendo a sessão WhatsApp.
DELETE /instance/logout
apikey: TOKEN-DA-INSTANCIA
{}{
"message": "success"
}curl -X DELETE http://localhost:4000/instance/logout \
-H "Content-Type: application/json" \
-H "apikey: token-da-instancia-vendas" \
-d '{}'Remove completamente a instância e todos os seus dados.
DELETE /instance/delete/:instanceId
apikey: SUA-GLOBAL-API-KEY
GLOBAL_API_KEY (administrativa). Esta ação é irreversível!
{
"message": "success"
}curl -X DELETE "http://localhost:4000/instance/delete/vendas" \
-H "apikey: SUA-GLOBAL-API-KEY"Configura proxy HTTP para a instância.
POST /instance/proxy/:instanceId
Content-Type: application/json
apikey: SUA-GLOBAL-API-KEY
{
"host": "proxy.exemplo.com",
"port": "8080",
"username": "usuario",
"password": "senha"
}{
"message": "success",
"data": {
"host": "proxy.exemplo.com",
"port": "8080",
"hasAuth": true
}
}curl -X POST "http://localhost:4000/instance/proxy/vendas" \
-H "Content-Type: application/json" \
-H "apikey: SUA-GLOBAL-API-KEY" \
-d '{
"host": "proxy.exemplo.com",
"port": "8080",
"username": "usuario",
"password": "senha"
}'Remove configuração de proxy da instância.
DELETE /instance/proxy/:instanceId
apikey: SUA-GLOBAL-API-KEY
{
"message": "success"
}curl -X DELETE "http://localhost:4000/instance/proxy/vendas" \
-H "apikey: SUA-GLOBAL-API-KEY"Força reconexão com número específico (útil para resolver problemas).
POST /instance/forcereconnect/:instanceId
Content-Type: application/json
apikey: SUA-GLOBAL-API-KEY
{
"number": "5511999999999"
}{
"message": "success"
}curl -X POST "http://localhost:4000/instance/forcereconnect/vendas" \
-H "Content-Type: application/json" \
-H "apikey: SUA-GLOBAL-API-KEY" \
-d '{"number": "5511999999999"}'Obtém logs da instância.
GET /instance/logs/:instanceId?start_date=DATA&end_date=DATA&level=NIVEL&limit=N
apikey: SUA-GLOBAL-API-KEY
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| start_date | string | ❌ Não | Data inicial (YYYY-MM-DD) |
| end_date | string | ❌ Não | Data final (YYYY-MM-DD) |
| level | string | ❌ Não | Nível do log (INFO, DEBUG, ERROR) |
| limit | integer | ❌ Não | Número de registros (padrão: 100) |
[
{
"timestamp": "2025-01-15T10:30:00Z",
"level": "INFO",
"message": "Instance connected successfully",
"instanceId": "vendas"
}
]curl "http://localhost:4000/instance/logs/vendas?start_date=2025-01-01&limit=50" \
-H "apikey: SUA-GLOBAL-API-KEY"GET /instance/:instanceId/advanced-settings
apikey: SUA-GLOBAL-API-KEY
{
"rejectCall": false,
"msgCall": "Não estou disponível para chamadas",
"groupsIgnore": true,
"alwaysOnline": false,
"readMessages": false,
"readStatus": false,
"syncFullHistory": false
}PUT /instance/:instanceId/advanced-settings
Content-Type: application/json
apikey: SUA-GLOBAL-API-KEY
{
"rejectCall": true,
"msgCall": "Por favor, envie mensagem",
"groupsIgnore": false,
"alwaysOnline": true,
"readMessages": true,
"readStatus": true,
"syncFullHistory": false
}curl -X PUT "http://localhost:4000/instance/vendas/advanced-settings" \
-H "Content-Type: application/json" \
-H "apikey: SUA-GLOBAL-API-KEY" \
-d '{
"rejectCall": true,
"alwaysOnline": true
}'curl -X POST http://localhost:4000/instance/create \
-H "Content-Type: application/json" \
-H "apikey: SUA-GLOBAL-API-KEY" \
-d '{
"name": "vendas",
"token": "token-vendas-123"
}'curl -X POST http://localhost:4000/instance/connect \
-H "Content-Type: application/json" \
-H "apikey: token-vendas-123" \
-d '{
"webhookUrl": "https://meu-servidor.com/webhook",
"subscribe": ["messages.upsert"]
}'curl "http://localhost:4000/instance/qr" \
-H "apikey: token-vendas-123"Abra o WhatsApp → Aparelhos conectados → Conectar um aparelho → Escanear QR Code
curl "http://localhost:4000/instance/status" \
-H "apikey: token-vendas-123"GLOBAL_API_KEY:
- Use para rotas administrativas (criar, deletar, listar instâncias)
- Mantenha em segredo (variável de ambiente)
- Nunca exponha em código frontend
- Rotacione periodicamente
Token da Instância:
- Defina ao criar a instância (
tokenno body) - Use para operações da instância específica (enviar mensagens, obter status)
- Um token único por instância
- Use UUIDs:
uuidgenoupython3 -c "import uuid; print(uuid.uuid4())"
- Use nomes descritivos e únicos
- Apenas letras, números e hífen
- Exemplo:
vendas-empresa,suporte-01
- Configure webhook para receber eventos em tempo real
- Use HTTPS em produção
- Valide os eventos recebidos
- Retorne status 200 rapidamente
- Monitore o status das instâncias regularmente
- Configure reconexão automática se necessário
- Mantenha logs para debug
- Use configurações avançadas conforme necessário
Causa: API key incorreta ou ausente Solução:
- Rotas administrativas: Use
GLOBAL_API_KEY - Rotas de operação: Use token da instância
Causa: Instância não existe ou token incorreto Solução: Verifique se a instância foi criada e se está usando o token correto
Causa: Campo obrigatório não enviado Solução: Inclua todos os campos obrigatórios no body
Causa: QR Code tem validade de ~40 segundos
Solução: Use /instance/reconnect para gerar novo QR
Causa: Tentou obter QR Code de instância já conectada Solução: Instância já está conectada, não precisa de QR Code
- API de Mensagens - Enviar diferentes tipos de mensagens
- API de Usuários - Gerenciar perfil e contatos
- Sistema de Eventos - Webhooks e eventos
- Configuração - Variáveis de ambiente
Dica: Use o Swagger em http://localhost:4000/swagger/index.html para testar os endpoints interativamente!