Guia completo de integração com WhatsApp
Sistema de gerenciamento multi-instância do WhatsApp que permite:
Quando configurados, os seguintes eventos são notificados via webhook:
{
"event": "status_change",
"instancia_id": 100,
"instancia_nome": "Minha Instância",
"status": {
"anterior": "connected",
"atual": "disconnected"
},
"timestamp": "2025-01-15T12:34:30-03:00"
}
{
"id": 123,
"mensagem_id": "ABC123",
"instancia_id": 100,
"mensagem": "Conteúdo da mensagem",
"origem": "5511999999999",
"destino": "5511888888888",
"enviado": true,
"erro": null,
"tipo_envio": "MENSAGEM_ENVIADA", // ou "MENSAGEM_RECEBIDA"
"grupo": false,
"lido": false,
"created_at": "2025-01-15T12:34:30-03:00"
}
POST /api/v1/whatsapp/instancia/criar
Cria uma nova instância do WhatsApp para uso
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
nome | string | Sim | Nome para identificar a instância (máx. 255 caracteres) |
webhook_url | string | Não | URL para receber webhooks (ativa automaticamente as notificações) |
curl -X POST "https://apifacil.dev/api/v1/whatsapp/instancia/criar" \
-H "Authorization: seu_token" \
-H "Content-Type: application/json" \
-d '{
"nome": "Minha Instância"
}'
{
"error": false,
"message": "Instância criada com sucesso",
"data": {
"instancia_id": "123",
"nome": "Minha Instância",
"status": "inactive",
"token": "abc123def456"
}
}
Código | Descrição |
---|---|
200 | Instância criada com sucesso |
403 | Limite de instâncias atingido |
422 | Erro de validação nos dados |
GET /api/v1/whatsapp/instancia/listar
Retorna todas as instâncias do usuário
curl -X GET "https://apifacil.dev/api/v1/whatsapp/instancia/listar" \
-H "Authorization: seu_token"
{
"error": false,
"data": [
{
"id": "123",
"nome": "Minha Instância",
"public_token": "abc123def456",
"status": "active",
"whatsapp_status": "connected",
"created_at": "2024-01-01T10:00:00Z"
},
{
"id": "124",
"nome": "Instância 2",
"public_token": "xyz789",
"status": "inactive",
"whatsapp_status": "disconnected",
"created_at": "2024-01-02T15:30:00Z"
}
]
}
Status | Descrição |
---|---|
active | Instância ativa e pronta para uso |
inactive | Instância criada mas não iniciada |
connected | WhatsApp conectado e operacional |
disconnected | WhatsApp desconectado |
Campo | Tipo | Descrição |
---|---|---|
id | string | Identificador único da instância |
nome | string | Nome da instância |
public_token | string | Token público para operações |
status | string | Status atual da instância |
whatsapp_status | string | Status da conexão WhatsApp |
GET /api/v1/whatsapp/instancia/{id}/status
Retorna o status detalhado de uma instância específica
Parâmetro | Tipo | Descrição |
---|---|---|
id | string | ID da instância |
curl -X GET "https://apifacil.dev/api/v1/whatsapp/instancia/123/status" \
-H "Authorization: seu_token"
{
"error": false,
"data": {
"status_banco": "connected",
"tem_qrcode": false
}
}
Estado | Descrição | Próximas Ações |
---|---|---|
connected | WhatsApp conectado | Pronto para uso |
disconnected | Desconectado | Reconectar ou gerar novo QR |
GET /api/v1/whatsapp/instancia/{id}/qrcode
Obtém o QR Code para conexão do WhatsApp
O QR Code é válido por 20 segundos. Após esse período, será necessário gerar um novo.
curl -X GET "https://apifacil.dev/api/v1/whatsapp/instancia/123/qrcode" \
-H "Authorization: seu_token"
{
"error": false,
"data": {
"qrcode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...",
"sessao_ativa": false
}
}
POST /api/v1/whatsapp/instancia/{id}/iniciar
Inicia uma instância específica do WhatsApp
curl -X POST "https://apifacil.dev/api/v1/whatsapp/instancia/123/iniciar" \
-H "Authorization: seu_token"
{
"error": false,
"message": "Sessão iniciada com sucesso"
}
POST /api/v1/whatsapp/instancia/{id}/pausar
Pausa temporariamente uma instância do WhatsApp
curl -X POST "https://apifacil.dev/api/v1/whatsapp/instancia/123/pausar" \
-H "Authorization: seu_token"
{
"error": false,
"message": "Sessão pausada com sucesso"
}
POST /api/v1/whatsapp/instancia/{id}/desconectar
Desconecta completamente uma instância do WhatsApp e limpa os dados da sessão
Esta operação é mais agressiva que pausar. Ela remove todos os dados da sessão e requer um novo QR Code para reconexão.
curl -X POST "https://apifacil.dev/api/v1/whatsapp/instancia/123/desconectar" \
-H "Authorization: seu_token"
{
"error": false,
"message": "Instância desconectada com sucesso"
}
Ação | Pausar | Desconectar |
---|---|---|
Dados da Sessão | Mantidos | Removidos |
Reconexão | Rápida | Requer novo QR Code |
Notificações | Preservadas | Removidas |
DELETE /api/v1/whatsapp/instancia/{id}
Remove permanentemente uma instância do WhatsApp
curl -X DELETE "https://apifacil.dev/api/v1/whatsapp/instancia/123" \
-H "Authorization: seu_token"
{
"error": false,
"message": "Instância deletada com sucesso"
}
POST /api/v1/whatsapp/instancia/verificar-numero
Verifica se um número está registrado no WhatsApp
Este endpoint permite verificar se um número de telefone está registrado no WhatsApp antes de tentar enviar mensagens. Se não for informada uma instância, será utilizada a primeira instância do usuário.
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
telefone | string | Sim | Número a ser verificado (formato: DDI + DDD + número) |
instancia | string | Não | ID da instância a ser utilizada. Se não informado, usa a primeira instância |
curl -X POST "https://apifacil.dev/api/v1/whatsapp/instancia/verificar-numero" \
-H "Authorization: seu_token" \
-H "Content-Type: application/json" \
-d '{
"telefone": "5511999999999",
"instancia": "123"
}'
{
"error": false,
"data": {
"exists": true,
"number": "5511999999999"
},
"message": "Verificação realizada com sucesso"
}
GET /api/v1/whatsapp/notificacoes
Lista todas as notificações do WhatsApp
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
data_inicial | string | Não | Data inicial para filtro (Y-m-d) |
data_final | string | Não | Data final para filtro (Y-m-d) |
instancia_id | integer | Não | ID da instância para filtrar |
tipo_envio | string | Não | Tipo de envio (ex: MENSAGEM_ENVIADA, MENSAGEM_RECEBIDA) |
per_page | integer | Não | Quantidade de registros por página (padrão: 15) |
curl -X GET "https://apifacil.dev/api/v1/whatsapp/notificacoes?data_inicial=2024-01-01&data_final=2024-01-31" \
-H "Authorization: seu_token"
{
"error": false,
"data": {
"current_page": 1,
"data": [
{
"id": 123,
"mensagem_id": "ABC123",
"instancia_id": 100,
"mensagem": "Conteúdo da mensagem",
"origem": "5511999999999",
"destino": "5511888888888",
"enviado": true,
"erro": null,
"tipo_envio": "MENSAGEM_ENVIADA",
"grupo": false,
"lido": false,
"created_at": "2024-01-15T12:34:30Z",
"updated_at": "2024-01-15T12:34:30Z"
}
],
"first_page_url": "http://api.exemplo.com/api/v1/whatsapp/notificacoes?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://api.exemplo.com/api/v1/whatsapp/notificacoes?page=1",
"next_page_url": null,
"path": "http://api.exemplo.com/api/v1/whatsapp/notificacoes",
"per_page": 15,
"prev_page_url": null,
"to": 1,
"total": 1
}
}
GET /api/v1/whatsapp/notificacoes/{id}
Retorna os detalhes de uma notificação específica
curl -X GET "https://apifacil.dev/api/v1/whatsapp/notificacoes/123" \
-H "Authorization: seu_token"
{
"error": false,
"data": {
"id": 123,
"mensagem_id": "ABC123",
"instancia_id": 100,
"mensagem": "Conteúdo da mensagem",
"origem": "5511999999999",
"destino": "5511888888888",
"enviado": true,
"erro": null,
"tipo_envio": "MENSAGEM_ENVIADA",
"grupo": false,
"lido": false,
"created_at": "2024-01-15T12:34:30Z",
"updated_at": "2024-01-15T12:34:30Z"
}
}
Tipo | Descrição |
---|---|
MENSAGEM_ENVIADA | Mensagem enviada com sucesso |
MENSAGEM_RECEBIDA | Mensagem recebida de um contato |
ERRO_PROCESSAMENTO | Erro durante o processamento da mensagem |
MENSAGEM_GRUPO_RECEBIDO | Mensagem recebida em um grupo |
AUDIO_RECEBIDO | Áudio recebido |
IMAGEM_RECEBIDA | Imagem recebida |
VIDEO_RECEBIDO | Vídeo recebido |
DOCUMENTO_RECEBIDO | Documento recebido |
Para utilizar a API de WhatsApp, é necessário:
O envio de mensagens só funcionará após a configuração completa de uma instância e a sincronização bem-sucedida com seu WhatsApp.
POST /api/v1/whatsapp/enviar-mensagem
Envia uma mensagem de texto via WhatsApp
Parâmetro | Tipo | Descrição |
---|---|---|
telefone | string | Número do WhatsApp com DDD |
mensagem | string | Texto da mensagem |
instancia | string | ID da instância do WhatsApp (opcional) |
O número de telefone deve incluir o código do país. Exemplos:
{
"telefone": "5511999999999", // Inclui código do país (55) + DDD (11) + número
"mensagem": "Olá! Esta é uma mensagem de teste.",
"instancia": "12345"
}
curl -X POST "https://apifacil.dev/api/v1/whatsapp/enviar-mensagem" \
-H "Authorization: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"telefone": "5511999999999",
"mensagem": "Olá! Esta é uma mensagem de teste.",
"instancia": "12345"
}'
{
"error": false,
"data": {
"queue": "mensagem_em_fila",
"message": "Mensagem em fila para envio"
}
}
O link fornecido no campo "url" deve estar presente no texto da mensagem para que o preview funcione corretamente.
POST /api/v1/whatsapp/enviar-preview
Envie mensagens com preview personalizado de links
Envie mensagens de texto com preview personalizado de links para seus contatos no WhatsApp.
POST /api/v1/whatsapp/enviar-preview
Parâmetro | Tipo | Descrição | Obrigatório |
---|---|---|---|
telefone | string | Número do WhatsApp (com DDD) | Sim |
mensagem | string | Texto da mensagem | Sim |
url | string | URL para gerar o preview | Sim |
titulo | string | Título personalizado para o preview | Não |
descricao | string | Descrição personalizada para o preview | Não |
imagem_url | string | URL da imagem para o preview | Não |
instancia | string | ID da instância do WhatsApp | Não |
tipo_imagem | string | Tamanho do preview da imagem (small, medium ou large) | Não |
{ "telefone": "5511999999999", "mensagem": "Confira este link interessante! https://exemplo.com", "url": "https://exemplo.com", "titulo": "Título Personalizado", "descricao": "Descrição personalizada do link", "imagem_url": "https://exemplo.com/imagem.jpg", "tipo_imagem": "medium" }
curl -X POST https://apifacil.com/api/v1/whatsapp/enviar-preview \ -H 'Content-Type: application/json' \ -H 'Authorization: sua_chave_de_api' \ -d '{ "telefone": "5511999999999", "mensagem": "Confira este link interessante! https://exemplo.com", "url": "https://exemplo.com", "titulo": "Título Personalizado", "descricao": "Descrição personalizada do link", "imagem_url": "https://exemplo.com/imagem.jpg", "tipo_imagem": "medium" }'
{ "error": false, "data": { "queue": true, "message": "Mensagem em fila para envio" } }
Dica: Se não forem fornecidos título, descrição ou imagem, o sistema tentará extraí-los automaticamente da URL fornecida.
POST /api/v1/whatsapp/enviar-foto
Envia uma imagem via WhatsApp
Parâmetro | Tipo | Descrição |
---|---|---|
telefone | string | Número do WhatsApp com DDD |
link | string | URL da imagem |
nome | string | Nome da imagem |
instancia | string | ID da instância do WhatsApp (opcional) |
{
"telefone": "5551999999999",
"link": "https://example.com/imagem.jpg",
"nome": "imagem.jpg",
"instancia": "12345"
}
curl -X POST "https://apifacil.dev/api/v1/whatsapp/enviar-foto" \
-H "Authorization: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"telefone": "5551999999999",
"link": "https://example.com/imagem.jpg",
"nome": "imagem.jpg",
"instancia": "12345"
}'
POST /api/v1/whatsapp/enviar-arquivo
Envia um arquivo via WhatsApp
Parâmetro | Tipo | Descrição |
---|---|---|
telefone | string | Número do WhatsApp com DDD |
link | string | URL do arquivo |
nome | string | Nome do arquivo |
mensagem | string | Texto opcional para o arquivo |
instancia | string | ID da instância do WhatsApp (opcional) |
{
"telefone": "5551999999999",
"link": "https://example.com/documento.pdf",
"nome": "documento.pdf",
"mensagem": "Confira o documento.",
"instancia": "12345"
}
curl -X POST "https://apifacil.dev/api/v1/whatsapp/enviar-arquivo" \
-H "Authorization: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"telefone": "5551999999999",
"link": "https://example.com/documento.pdf",
"nome": "documento.pdf",
"mensagem": "Confira o documento.",
"instancia": "12345"
}'
Endpoint para enviar arquivos codificados em base64 através do WhatsApp. Este método é útil quando você já tem o arquivo em formato base64 e não quer fazer upload para um servidor externo.
Parâmetro | Tipo | Descrição |
---|---|---|
arquivo_base64 | string | Arquivo codificado em base64 (sem o prefixo data:...) |
tipo_arquivo | string | Extensão do arquivo (pdf, doc, xlsx, etc) |
nome | string | Nome do arquivo que aparecerá no WhatsApp |
telefone | string | Número do telefone no formato DDDNúmero |
mensagem | string | Mensagem opcional que acompanha o arquivo |
instancia | string | ID da instância (opcional) |
{
"arquivo_base64": "JVBERi0xLjcKCjEgMCBvYmogICUgZW50...",
"tipo_arquivo": "pdf",
"nome": "documento.pdf",
"telefone": "11999999999",
"mensagem": "Segue o documento solicitado",
"instancia": "123"
}
curl --location 'https://apifacil.dev/api/v1/whatsapp/enviar-arquivo-64' \
--header 'Authorization: seu_token_aqui' \
--header 'Content-Type: application/json' \
--data '{
"arquivo_base64": "JVBERi0xLjcKCjEgMCBvYmogICUgZW50...",
"tipo_arquivo": "pdf",
"nome": "documento.pdf",
"telefone": "11999999999",
"mensagem": "Segue o documento solicitado",
"instancia": "123"
}'
{
"error": false,
"data": {
"queue": "msg_123456",
"message": "Arquivo em fila para envio"
}
}
O tipo do arquivo informado deve corresponder ao conteúdo real do arquivo base64. A API valida o MIME type do arquivo para garantir a segurança.
POST /api/v1/whatsapp/enviar-audio
Envia uma mensagem de voz via WhatsApp
Parâmetro | Tipo | Descrição |
---|---|---|
telefone | string | Número do WhatsApp com DDD |
audio_url | string | URL do arquivo de áudio (MP3/MP4) |
instancia | string | ID da instância do WhatsApp (opcional) |
{
"telefone": "5511999999999",
"audio_url": "https://example.com/audio.mp3",
"instancia": "12345"
}
curl -X POST "https://apifacil.dev/api/v1/whatsapp/enviar-audio" \
-H "Authorization: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"telefone": "5511999999999",
"audio_url": "https://example.com/audio.mp3",
"instancia": "12345"
}'
GET /whatsapp/grupos
Lista todos os grupos que a instância participa
Parâmetro | Tipo | Descrição |
---|---|---|
instancia | string | ID da instância do WhatsApp (opcional) |
curl -X GET "https://apifacil.dev/api/v1/whatsapp/grupos?instancia=12345" \
-H "Authorization: seu_token_aqui"
{
"error": false,
"data": [
{
"id": "123456789-group@g.us",
"name": "Nome do Grupo",
"participants": 50,
"isAdmin": true
}
]
}
POST /whatsapp/grupo/enviar-mensagem
Envia uma mensagem para um grupo específico
Parâmetro | Tipo | Descrição |
---|---|---|
grupo_id | string | ID do grupo (obtido via listagem) |
mensagem | string | Texto da mensagem |
instancia | string | ID da instância do WhatsApp (opcional) |
{
"grupo_id": "123456789-group@g.us",
"mensagem": "Olá grupo!",
"instancia": "12345"
}
curl -X POST "https://apifacil.dev/api/v1/whatsapp/grupo/enviar-mensagem" \
-H "Authorization: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"grupo_id": "123456789-group@g.us",
"mensagem": "Olá grupo!",
"instancia": "12345"
}'
POST /whatsapp/grupo/enviar-arquivo
Envia um arquivo para um grupo específico
Parâmetro | Tipo | Descrição |
---|---|---|
grupo_id | string | ID do grupo (obtido via listagem) |
link | string | URL do arquivo |
nome | string | Nome do arquivo |
mensagem | string | Texto opcional para o arquivo |
instancia | string | ID da instância do WhatsApp (opcional) |
{
"grupo_id": "123456789-group@g.us",
"link": "https://example.com/documento.pdf",
"nome": "documento.pdf",
"mensagem": "Confira o documento.",
"instancia": "12345"
}
curl -X POST "https://apifacil.dev/api/v1/whatsapp/grupo/enviar-arquivo" \
-H "Authorization: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"grupo_id": "123456789-group@g.us",
"link": "https://example.com/documento.pdf",
"nome": "documento.pdf",
"mensagem": "Confira o documento.",
"instancia": "12345"
}'
POST /whatsapp/grupo/enviar-preview
Envia uma mensagem com preview de link para um grupo específico
Parâmetro | Tipo | Descrição |
---|---|---|
grupo_id | string | ID do grupo (obtido via listagem) |
mensagem | string | Texto da mensagem |
url | string | URL que será exibida no preview |
titulo | string | Título do preview (opcional) |
descricao | string | Descrição do preview (opcional) |
imagem_url | string | URL da imagem do preview (opcional) |
tipo_imagem | string | Tamanho da imagem (small, medium, large) - padrão: medium |
instancia | string | ID da instância do WhatsApp (opcional) |
{
"grupo_id": "123456789-group@g.us",
"mensagem": "Confira este link interessante!",
"url": "https://exemplo.com",
"titulo": "Título do Link",
"descricao": "Descrição do conteúdo",
"imagem_url": "https://exemplo.com/imagem.jpg",
"tipo_imagem": "medium",
"instancia": "12345"
}
curl -X POST "https://apifacil.dev/api/v1/whatsapp/grupo/enviar-preview" \
-H "Authorization: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"grupo_id": "123456789-group@g.us",
"mensagem": "Confira este link interessante!",
"url": "https://exemplo.com",
"titulo": "Título do Link",
"descricao": "Descrição do conteúdo",
"imagem_url": "https://exemplo.com/imagem.jpg",
"tipo_imagem": "medium",
"instancia": "12345"
}'