API WhatsApp multi-instancia para integracoes comerciais
A Wozapi permite conectar instancias WhatsApp, enviar mensagens, receber eventos por webhook, integrar com n8n, Chatwoot e Typebot, operar campanhas com fila e acompanhar logs de entrega. Cada instancia possui API key propria, webhook proprio, eventos, logs e limites comerciais por plano.
Links Rapidos
https://painel.wozapi.com.brwoo_xxxX-Wooapi-Signature| Recurso | URL | Uso |
|---|---|---|
| Documentacao visual | /docs/wozapi | Pagina publica para clientes e integradores. |
| Swagger | /docs | Testes tecnicos baseados no OpenAPI. |
| Postman | /postman/wooapi.postman_collection.json | Collection importavel no Postman. |
| OpenAPI | /openapi.json | Contrato para SDKs, gateways e automacoes. |
| Termos | /terms | Termos de uso comercial da Wozapi. |
Autenticacao
API da instancia
Use para enviar mensagens, consultar status, configurar webhooks, contatos, perfil, grupos e integracoes da instancia.
x-api-key: woo_sua_api_key
Tambem aceitamos token: woo_sua_api_key em rotas simplificadas e Authorization: Bearer woo_sua_api_key em alguns endpoints publicos.
Painel e administracao
Use o JWT obtido no login para endpoints de conta, campanhas, CRM, usuarios, planos e administracao.
Authorization: Bearer jwt_da_conta
Endpoints administrativos externos podem exigir admintoken, configurado no ambiente.
Primeiros Passos
1. Criar ou obter uma instancia
No painel, crie uma nova instancia. A resposta da API ja entrega api_key, webhook_secret e URLs de webhook da instancia.
curl -X POST https://painel.wozapi.com.br/api/v1/instances \
-H "Authorization: Bearer JWT_DA_CONTA" \
-H "Content-Type: application/json" \
-d '{
"name": "Atendimento Comercial",
"webhook_url": "https://seu-n8n.com/webhook/wozapi"
}'
2. Conectar o WhatsApp
curl -X POST https://painel.wozapi.com.br/api/v1/instances/17/connect \
-H "x-api-key: woo_sua_api_key"
3. Enviar uma mensagem
curl -X POST https://painel.wozapi.com.br/api/v1/instances/17/send-text \
-H "x-api-key: woo_sua_api_key" \
-H "Content-Type: application/json" \
-d '{
"number": "5548999999999",
"text": "Ola! Mensagem enviada pela Wozapi."
}'
Instancias
Instancias representam uma sessao WhatsApp independente. Cada instancia tem status, QR Code, numero conectado, perfil, API key, webhook proprio, logs e limites de uso.
| Metodo | Endpoint | Descricao |
|---|---|---|
| GET | /api/v1/instances | Lista instancias da conta autenticada por JWT. |
| POST | /api/v1/instances | Cria instancia e retorna API key, secret e pacote de webhook. |
| GET | /api/v1/instances/:id | Detalhes da instancia usando API key. |
| GET | /api/v1/instances/:id/status | Status, telefone, JID e identidade conectada. |
| GET | /api/v1/instances/:id/qr | QR Code atual quando a instancia estiver aguardando conexao. |
| POST | /api/v1/instances/:id/connect | Inicia conexao e gera QR quando necessario. |
| POST | /api/v1/instances/:id/reconnect | Forca reconexao controlada da sessao. |
| POST | /api/v1/instances/:id/logout | Desconecta e limpa identidade local da sessao. |
| POST | /api/v1/instances/:id/api-key/regenerate | Rotaciona a API key da instancia. |
Resposta de criacao
{
"success": true,
"data": {
"id": 17,
"api_key": "woo_xxx",
"webhook_secret": "whsec_xxx",
"webhook": {
"webhooks_url": "https://painel.wozapi.com.br/api/v1/instances/17/webhooks",
"webhook_events_url": "https://painel.wozapi.com.br/api/v1/instances/17/webhook-events",
"webhook_logs_url": "https://painel.wozapi.com.br/api/v1/instances/17/webhook-logs",
"webhook_test_url": "https://painel.wozapi.com.br/api/v1/instances/17/webhook/test",
"signing_header": "X-Wooapi-Signature",
"secret": "whsec_xxx"
}
}
}
Mensagens
Os endpoints de mensagem usam a API key da instancia. O destinatario pode ser enviado como number, phone ou jid. Numeros devem incluir DDI e DDD, sem simbolos.
| Metodo | Endpoint | Disponivel |
|---|---|---|
| POST | /api/v1/instances/:id/send-text | Texto simples. |
| POST | /api/v1/instances/:id/send-media | Imagem, video, audio ou documento por URL/base64. |
| POST | /api/v1/instances/:id/send-location | Localizacao com latitude, longitude, nome e endereco. |
| POST | /api/v1/instances/:id/send-contact | Contato/vCard. |
| POST | /api/v1/instances/:id/send-reply | Responder citando uma mensagem. |
| POST | /api/v1/instances/:id/messages/react | Reacao a mensagem. |
| POST | /api/v1/instances/:id/messages/read | Marcar como lida. |
| POST | /api/v1/instances/:id/messages/edit | Editar mensagem enviada quando suportado pela sessao. |
| POST | /api/v1/instances/:id/messages/delete | Apagar mensagem enviada quando suportado pela sessao. |
| POST | /api/v1/instances/:id/messages/download | Download de midia recebida recente. |
| POST | /api/v1/instances/:id/presence | Disponivel, digitando, gravando audio ou pausado. |
Enviar midia
curl -X POST https://painel.wozapi.com.br/api/v1/instances/17/send-media \
-H "x-api-key: woo_sua_api_key" \
-H "Content-Type: application/json" \
-d '{
"number": "5548999999999",
"url": "https://exemplo.com/catalogo.pdf",
"caption": "Catalogo atualizado",
"mime_type": "application/pdf",
"file_name": "catalogo.pdf"
}'
Envio assincrono
Use quando seu sistema nao deve aguardar o WhatsApp confirmar o envio no mesmo request. Adicione async: true, async_send: true, send_async: true ou mode: "async" no corpo da requisicao.
A API retorna HTTP 202 com queued: true, jobId, pendingMessageId e a mensagem salva como pending. O resultado final chega depois pelos webhooks message.sent ou message.failed.
Importante: requer QUEUE_DRIVER=bullmq, Redis disponivel e o worker npm run worker:messages em execucao. Se a fila nao estiver disponivel, a API retorna QUEUE_UNAVAILABLE.
curl -X POST https://painel.wozapi.com.br/api/v1/instances/17/send-text \
-H "x-api-key: woo_sua_api_key" \
-H "Content-Type: application/json" \
-d '{
"number": "5548999999999",
"text": "Ola! Esta mensagem sera enviada pela fila.",
"async": true
}'
Resposta quando enfileirada
{
"success": true,
"message": "Mensagem enfileirada para envio",
"data": {
"queued": true,
"jobId": "12345",
"pendingMessageId": "out_1710000000000"
}
}
Enviar localizacao
curl -X POST https://painel.wozapi.com.br/api/v1/instances/17/send-location \
-H "x-api-key: woo_sua_api_key" \
-H "Content-Type: application/json" \
-d '{
"number": "5548999999999",
"latitude": -27.5949,
"longitude": -48.5482,
"name": "Wozapi",
"address": "Florianopolis - SC"
}'
Webhooks
Webhooks entregam eventos da instancia para sistemas externos. Cada webhook tem URL, secret HMAC, eventos filtrados, retentativas e logs de entrega.
X-Wooapi-Signature no formato sha256=<hmac_sha256_raw_body_hex>. Use o webhook_secret da instancia ou do webhook criado.
| Metodo | Endpoint | Descricao |
|---|---|---|
| GET | /api/v1/instances/:id/webhooks | Lista webhooks configurados. |
| POST | /api/v1/instances/:id/webhooks | Cria webhook com URL de destino. |
| PATCH | /api/v1/instances/:id/webhooks/:webhookId | Atualiza URL, eventos, status, secret e tentativas. |
| DELETE | /api/v1/instances/:id/webhooks/:webhookId | Remove webhook. |
| POST | /api/v1/instances/:id/webhooks/:webhookId/test | Dispara evento de teste para o webhook escolhido. |
| GET | /api/v1/instances/:id/webhook-events | Lista eventos registrados. |
| GET | /api/v1/instances/:id/webhook-logs | Lista tentativas HTTP reais de entrega. |
| POST | /api/v1/webhook-logs/:logId/retry | Reenvia evento associado a uma falha. |
Criar webhook
curl -X POST https://painel.wozapi.com.br/api/v1/instances/17/webhooks \
-H "x-api-key: woo_sua_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "n8n Atendimento",
"url": "https://seu-n8n.com/webhook/wozapi",
"events": ["message.received", "message.sent", "instance.connected", "instance.disconnected"],
"retry_enabled": true,
"max_attempts": 5
}'
Eventos principais
message.received: mensagem recebida.message.sent: mensagem enviada pela API/painel.message.read,message.edited,message.deleted,message.reaction: eventos de mensagem.instance.connected,instance.disconnected,instance.qr,instance.qr_expired: eventos de conexao.webhook.sent,webhook.failed,webhook.retrying: eventos operacionais.
Integracao Com n8n
Para conectar no n8n, o integrador precisa apenas da URL da API, ID da instancia e API key. Para receber eventos, crie um node Webhook no n8n e cadastre a URL dele na Wozapi.
Enviar pelo n8n
- Adicione um node HTTP Request.
- Metodo:
POST. - URL:
{{baseUrl}}/api/v1/instances/{{instanceId}}/send-text. - Header:
x-api-key = woo_sua_api_key. - Body JSON com
numberetext.
Receber no n8n
- Crie um node Webhook no n8n.
- Copie a Production URL.
- Cadastre em
/api/v1/instances/:id/webhooks. - Use o payload recebido para responder, criar lead, abrir ticket ou acionar IA.
Node HTTP Request - enviar texto
{
"method": "POST",
"url": "https://painel.wozapi.com.br/api/v1/instances/17/send-text",
"headers": {
"x-api-key": "woo_sua_api_key",
"Content-Type": "application/json"
},
"body": {
"number": "5548999999999",
"text": "Ola, {{$json.nome}}! Seu atendimento foi iniciado."
}
}
Fluxo recomendado no n8n
- Webhook Trigger: recebe
message.receivedda Wozapi. - IF/Switch: separa mensagem de texto, midia, grupo ou contato.
- CRM/Planilha/Banco: registra lead e historico.
- IA ou regras: gera resposta.
- HTTP Request: envia resposta pela Wozapi usando a mesma API key.
Postman
A collection Wozapi ja inclui variaveis de ambiente e requests para health, instancias, status, envio, webhooks, contatos, campanhas, logs e administracao.
Variaveis da collection
| Variavel | Exemplo | Descricao |
|---|---|---|
baseUrl | https://painel.wozapi.com.br | URL publica da API. |
jwt | eyJ... | Token de conta para painel/admin. |
instanceId | 17 | ID numerico da instancia. |
instanceToken | woo_xxx | API key da instancia. |
number | 5548999999999 | Numero alvo com DDI e DDD. |
webhookUrl | https://n8n.../webhook/wozapi | URL de destino para eventos. |
Contatos e Chats
| Metodo | Endpoint | Descricao |
|---|---|---|
| GET | /api/v1/instances/:id/contacts | Lista/sincroniza contatos conhecidos. |
| POST | /api/v1/instances/:id/contacts/check | Verifica se um numero possui WhatsApp. |
| POST | /api/v1/instances/:id/contacts/info | Busca foto, nome, status e dados business. |
| POST | /api/v1/instances/:id/contacts/block | Bloqueia ou desbloqueia contato. |
| POST | /api/v1/instances/:id/chats/state | Arquiva, silencia ou fixa conversa quando suportado. |
Perfil e Grupos
Perfil
GET /api/v1/instances/:id/profile: perfil, privacidade e business.POST /api/v1/instances/:id/profile/name: altera nome.POST /api/v1/instances/:id/profile/status: altera recado/status.POST /api/v1/instances/:id/profile/photo: altera foto.
Grupos
GET /api/v1/instances/:id/groups: lista grupos.POST /api/v1/instances/:id/groups: cria grupo.POST /api/v1/instances/:id/groups/participants: adiciona, remove, promove ou rebaixa participantes.POST /api/v1/instances/:id/groups/settings: nome, descricao, imagem e modo administrador.
Campanhas, Fila e CRM
A Wozapi possui recursos locais de campanhas, recipients, delays, pausar/cancelar, relatorios, leads, tags, notas, respostas rapidas e campos personalizados.
| Metodo | Endpoint | Descricao |
|---|---|---|
| POST | /api/campaigns | Cria campanha com template, instancia, delays e agendamento. |
| POST | /api/campaigns/:id/recipients | Adiciona destinatarios. |
| POST | /api/campaigns/:id/start | Inicia/enfileira campanha. |
| POST | /api/campaigns/:id/pause | Pausa campanha. |
| POST | /api/campaigns/:id/cancel | Cancela campanha. |
| GET | /api/campaigns/:id/report | Relatorio de enviados, entregues, lidos e falhas. |
| GET/POST | /api/quick-replies | Respostas rapidas locais. |
| POST | /api/leads/:id/notes | Notas internas no lead. |
| POST | /api/leads/:id/tags | Tags no lead. |
Admin, Observabilidade e Producao
O painel administrativo inclui metricas de instancias, filas, webhooks, alertas, logs, clientes, planos, backups e readiness de producao.
GET /health: banco, bridge, Redis/fila, readiness e bloqueios.GET /api/admin/overview: visao geral de clientes, usuarios, instancias e mensagens.GET /api/admin/wooapi-monitor: observabilidade por instancia, filas, webhooks e alertas.GET /api/admin/logs?type=webhooks: logs administrativos.GET /api/admin/backups,POST /api/admin/backups: backup operacional.GET /docs/production-readiness.md: checklist de producao.
Limitacoes Comerciais Importantes
A Wozapi e uma plataforma de automacao para WhatsApp baseada em sessoes conectadas pelo cliente. Existe risco de desconexao, bloqueio, limitacao de conta, mudancas de comportamento do provedor e incompatibilidades futuras.
Para clientes que exigem botoes nativos oficiais, garantias formais de entrega/renderizacao ou SLA contratado diretamente com o provedor, avalie um projeto separado com canais oficiais.
- Botoes interativos nativos oficiais nao fazem parte do produto vendavel nesta versao. Use texto, links, midia, webhooks e fluxos externos.
- Use delays, limites por plano e boas praticas anti-spam.
- Evite disparos massivos sem consentimento.
- Configure Redis/BullMQ em producao para escala real.
- Configure Stripe para billing automatizado e readiness comercial completo.
- Mantenha backup de banco, sessoes e midias.