Sistema de gerenciamento multi-instância do WhatsApp que permite:
Quando uma instância se conecta ao WhatsApp, o sistema coleta e armazena automaticamente informações úteis:
💡 Dica: Use o metadata para validar qual número está conectado e monitorar as conexões das suas instâncias.
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 |
webhook_status | string | Não | URL para receber webhooks |
webhook_grupo | string | Não | URL para receber webhooks |
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",
"metadata": {
"nome": "João da Silva",
"numero": "5511999999999",
"jid": "5511999999999@s.whatsapp.net",
"plataforma": "web",
"data_conexao": "2024-01-15T10:30:00.000Z",
"is_business": true,
"business_nome": "Minha Empresa Ltda",
"business_categoria": "Tecnologia",
"business_email": "contato@minhaempresa.com",
"business_website": "https://minhaempresa.com",
"business_endereco": "Rua das Flores, 123 - São Paulo/SP"
},
"created_at": "2024-01-01T10:00:00Z"
},
{
"id": "124",
"nome": "Instância 2",
"public_token": "xyz789",
"status": "inactive",
"whatsapp_status": "disconnected",
"metadata": null,
"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 |
metadata | object|null | Informações da conexão WhatsApp (nome, número, plataforma, data de conexão). Será
null quando desconectado
|
GET /api/v1/whatsapp/instancia/{id}/detalhes
Retorna todos os detalhes completos de uma instância específica, incluindo configurações e aquecimento
Parâmetro | Tipo | Descrição |
---|---|---|
id | string | ID ou código da instância |
curl -X GET "https://apifacil.dev/api/v1/whatsapp/instancia/123/detalhes" \
-H "Authorization: seu_token"
{
"error": false,
"data": {
"instancia": {
"id": 123,
"codigo": "550e8400-e29b-41d4-a716-446655440000",
"nome": "Minha Instância",
"public_token": "abc123def456",
"status": "connected",
"tipo_cobranca": "ASSINATURA",
"metadata": {
"nome": "João da Silva",
"numero": "5511999999999",
"jid": "5511999999999@s.whatsapp.net",
"plataforma": "web",
"data_conexao": "2024-01-15T10:30:00.000Z",
"is_business": true,
"business_nome": "Minha Empresa Ltda",
"business_categoria": "Tecnologia",
"business_email": "contato@minhaempresa.com",
"business_website": "https://minhaempresa.com",
"business_endereco": "Rua das Flores, 123 - São Paulo/SP"
},
"status_updated_at": "2024-01-15T10:30:00Z",
"created_at": "2024-01-01T10:00:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"configuracao": {
"webhook_url": "https://seusite.com/webhook/whatsapp",
"webhook_status": "https://seusite.com/webhook/status",
"webhook_grupo": "https://seusite.com/webhook/grupos",
"webhook_ativo": true,
"config_json": {
"tipos_envio": ["MENSAGEM_ENVIADA", "MENSAGEM_RECEBIDA"],
"ativar_delay_envio_resposta": true,
"ativar_notificacao_instancia": true,
"ativar_atualizacoes_interacao": false
},
"created_at": "2024-01-01T10:00:00Z",
"updated_at": "2024-01-15T09:00:00Z"
},
"aquecimento": {
"ativo": true,
"numeros": ["5511999999999", "5511888888888"],
"mensagens": ["Olá!", "Tudo bem?", "Teste de aquecimento"],
"enviar_fotos_privado": true,
"enviar_fotos_grupo": false,
"intervalo_minimo": 30,
"intervalo_maximo": 120,
"criar_grupos": false,
"trocar_foto_perfil": true,
"horario_inicio": "08:00",
"horario_fim": "18:00",
"config_json": null,
"ultima_execucao": "2024-01-15T14:30:00Z",
"created_at": "2024-01-01T10:00:00Z",
"updated_at": "2024-01-15T14:30:00Z"
}
}
}
Campo | Tipo | Descrição |
---|---|---|
id | integer | Identificador único da instância |
codigo | string | Código UUID ú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 |
tipo_cobranca | string | Tipo de cobrança (AVULSO ou ASSINATURA) |
metadata | object|null | Metadados da conexão WhatsApp (nome, número, etc) |
status_updated_at | string | Última atualização do status |
created_at | string | Data de criação |
updated_at | string | Data da última atualização |
O campo metadata
contém informações detalhadas sobre a conexão WhatsApp, coletadas automaticamente quando o
número é conectado. Estes dados são úteis para identificação e monitoramento.
Campo | Tipo | Descrição |
---|---|---|
nome | string|null | Nome do usuário do WhatsApp conectado |
numero | string|null | Número de telefone conectado (formato: DDI+DDD+número) |
jid | string|null | Identificador único do WhatsApp (JID) |
plataforma | string | Plataforma de conexão (ex: web, mobile) |
data_conexao | string | Data e hora da última conexão bem-sucedida (ISO 8601) |
Nota: O metadata é atualizado automaticamente
sempre que a instância se conecta ao WhatsApp. Quando a instância está desconectada, o campo
pode ser null
.
Campo | Tipo | Descrição |
---|---|---|
webhook_url | string|null | URL do webhook principal |
webhook_status | string|null | URL do webhook de status |
webhook_grupo | string|null | URL do webhook de grupos |
webhook_ativo | boolean | Status de ativação dos webhooks |
config_json | object | Configurações avançadas em JSON |
created_at | string | Data de criação |
updated_at | string | Data da última atualização |
Campo | Tipo | Descrição |
---|---|---|
ativo | boolean | Status de ativação do aquecimento |
numeros | array | Lista de números para aquecimento |
mensagens | array | Lista de mensagens para aquecimento |
enviar_fotos_privado | boolean | Enviar fotos em conversas privadas |
enviar_fotos_grupo | boolean | Enviar fotos em grupos |
intervalo_minimo | integer | Intervalo mínimo entre mensagens (minutos) |
intervalo_maximo | integer | Intervalo máximo entre mensagens (minutos) |
criar_grupos | boolean | Criar grupos durante aquecimento |
trocar_foto_perfil | boolean | Trocar foto de perfil |
horario_inicio | string | Horário de início (HH:MM) |
horario_fim | string | Horário de fim (HH:MM) |
config_json | object|null | Configurações adicionais em JSON |
ultima_execucao | string|null | Data da última execução |
created_at | string | Data de criação |
updated_at | string | Data da última atualização |
Código | Descrição |
---|---|
200 | Detalhes retornados com sucesso |
404 | Instância não encontrada ou não pertence ao usuário |
500 | Erro interno do servidor |
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"
}
Permite atualizar as configurações de webhooks de uma instância específica do WhatsApp, incluindo URLs de webhook, status de ativação e configurações avançadas de comportamento.
PUT /api/v1/whatsapp/configuracao/{id}
Atualiza as configurações de webhook de uma instância específica
Parâmetro | Tipo | Descrição |
---|---|---|
id | string | ID da instância WhatsApp |
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
webhook_url | string | Não | URL para receber webhooks de mensagens e eventos gerais |
webhook_status | string | Não | URL específica para receber webhooks de mudança de status da instância |
webhook_grupo | string | Não | URL específica para receber webhooks de mensagens de grupos |
webhook_ativo | boolean | Não | Ativar/desativar completamente os webhooks |
rejeitar_chamadas | boolean | Não | 🔕 Ativar rejeição automática de chamadas recebidas nesta instância |
tipos_envio | array | Não | Array com os tipos de envio permitidos (Quando habilitado você está dizendo que não quer receber mensagem desse tipo de envio) (ex: ["MENSAGEM_ENVIADA", "MENSAGEM_RECEBIDA"]) |
ativar_delay_envio_resposta | boolean | Não | Ativar delay antes de enviar resposta automática |
ativar_notificacao_instancia | boolean | Não | Ativar notificações de mudança de status da instância |
ativar_atualizacoes_interacao | boolean | Não | Ativar notificações de atualizações de interação |
curl -X PUT "https://apifacil.dev/api/v1/whatsapp/configuracao/ABC123" \
-H "Authorization: seu_token" \
-H "Content-Type: application/json" \
-d '{
"webhook_url": "https://seusite.com/webhook/whatsapp",
"webhook_status": "https://seusite.com/webhook/status",
"webhook_grupo": "https://seusite.com/webhook/grupos",
"webhook_ativo": true,
"rejeitar_chamadas": true,
"tipos_envio": ["MENSAGEM_ENVIADA", "MENSAGEM_RECEBIDA"],
"ativar_delay_envio_resposta": true,
"ativar_notificacao_instancia": true,
"ativar_atualizacoes_interacao": false
}'
{
"error": false,
"message": "Configuração atualizada com sucesso",
"data": {
"id": 123,
"instancia_id": 456,
"user_id": 789,
"webhook_url": "https://seusite.com/webhook/whatsapp",
"webhook_status": "https://seusite.com/webhook/status",
"webhook_grupo": "https://seusite.com/webhook/grupos",
"webhook_ativo": true,
"config_json": {
"tipos_envio": ["MENSAGEM_ENVIADA", "MENSAGEM_RECEBIDA"],
"ativar_delay_envio_resposta": true,
"ativar_notificacao_instancia": true,
"ativar_atualizacoes_interacao": false
},
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T14:45:00Z"
}
}
O sistema agora possui retry automático para webhooks falhados:
💡 Dica: Certifique-se de que seu endpoint webhook seja confiável e responda rapidamente para evitar retries desnecessários.
Código | Descrição |
---|---|
200 | Configuração atualizada com sucesso |
404 | Instância não encontrada ou não pertence ao usuário |
422 | Erro de validação nos dados enviados |
500 | Erro interno do servidor |
Os campos armazenados em config_json
permitem controle
avançado do comportamento da instância:
true
, adiciona um pequeno
delay (alguns segundos) antes de enviar respostas automáticas, simulando comportamento mais
naturaltrue
, envia webhooks sempre
que o status da instância muda (conectado/desconectado)true
, notifica sobre
atualizações de interação, como confirmações de leitura, etc.Você pode configurar URLs específicas para diferentes tipos de evento:
Se não especificar uma URL específica, os eventos serão enviados para a webhook_url principal.
curl -X PUT "https://apifacil.dev/api/v1/whatsapp/configuracao/ABC123" \
-H "Authorization: seu_token" \
-H "Content-Type: application/json" \
-d '{
"webhook_url": "https://novosite.com/webhook/whatsapp"
}'
curl -X PUT "https://apifacil.dev/api/v1/whatsapp/configuracao/ABC123" \
-H "Authorization: seu_token" \
-H "Content-Type: application/json" \
-d '{
"webhook_ativo": false
}'
curl -X PUT "https://apifacil.dev/api/v1/whatsapp/configuracao/ABC123" \
-H "Authorization: seu_token" \
-H "Content-Type: application/json" \
-d '{
"webhook_url": "https://api.minhaloja.com/whatsapp/mensagens",
"webhook_status": "https://api.minhaloja.com/whatsapp/status",
"webhook_grupo": "https://api.minhaloja.com/whatsapp/grupos"
}'
curl -X PUT "https://apifacil.dev/api/v1/whatsapp/configuracao/ABC123" \
-H "Authorization: seu_token" \
-H "Content-Type: application/json" \
-d '{
"tipos_envio": ["MENSAGEM_ENVIADA", "MENSAGEM_RECEBIDA", "ERRO_PROCESSAMENTO"],
"ativar_delay_envio_resposta": true,
"ativar_notificacao_instancia": true,
"ativar_atualizacoes_interacao": true
}'
curl -X PUT "https://apifacil.dev/api/v1/whatsapp/configuracao/ABC123" \
-H "Authorization: seu_token" \
-H "Content-Type: application/json" \
-d '{
"rejeitar_chamadas": true
}'
💡 Útil para evitar interrupções e manter o foco apenas em mensagens de texto
curl -X PUT "https://apifacil.dev/api/v1/whatsapp/configuracao/ABC123" \
-H "Authorization: seu_token" \
-H "Content-Type: application/json" \
-d '{
"webhook_url": "https://api.minhaloja.com/whatsapp/webhook",
"webhook_status": "https://api.minhaloja.com/whatsapp/status",
"webhook_grupo": "https://api.minhaloja.com/whatsapp/grupos",
"webhook_ativo": true,
"rejeitar_chamadas": true,
"tipos_envio": ["MENSAGEM_ENVIADA", "MENSAGEM_RECEBIDA"],
"ativar_delay_envio_resposta": true,
"ativar_notificacao_instancia": true,
"ativar_atualizacoes_interacao": false
}'
Após configurar, você receberá webhooks nestes formatos:
{
"event": "whatsapp_insert",
"id": 999,
"message_id": "ABC123DEF456",
"instancia_id": 123,
"mensagem": "Olá, tudo bem?",
"origem": "5511999999999",
"destino": "5511888888888",
"enviado": false,
"erro": false,
"tipo_envio": "MENSAGEM_RECEBIDA",
"grupo": false,
"lido": false,
"respondido": false,
"status": "recebida",
"origem_chamada": "API",
"data": "2024-01-15T14:30:15.000000Z"
}
{
"event": "status_change",
"instancia_id": "ABC123",
"instancia_nome": "Minha Loja",
"status": {
"anterior": "disconnected",
"atual": "connected"
},
"timestamp": "2024-01-15T14:45:30.000000Z"
}
Campo | Tipo | Descrição |
---|---|---|
event | string | Tipo do evento (sempre "whatsapp_insert") |
id | number|null | ID único da notificação no banco |
message_id | string | ID único da mensagem WhatsApp |
instancia_id | number | ID da instância WhatsApp |
mensagem | string | Conteúdo ou caminho do arquivo |
origem | string | Número do remetente |
destino | string | Número do destinatário |
enviado | boolean | Mensagem enviada com sucesso |
erro | boolean | Erro no processamento |
tipo_envio | string | Tipo da mensagem |
grupo | boolean | Mensagem em grupo |
lido | boolean | Mensagem marcada como lida |
respondido | boolean | Mensagem teve resposta |
status | string | Status atual da mensagem |
origem_chamada | string | Origem da chamada (sempre "API") |
created_at | string | Data/hora criação (ISO 8601) |
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"
}
}
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-botao
Envia uma mensagem com botões interativos via WhatsApp
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
telefone | string | Sim | Número do WhatsApp com DDD |
text | string | Sim | Texto da mensagem |
buttons | array | Sim | Array de objetos representando os botões |
footer | string | Não | Texto do rodapé da mensagem |
title | string | Não | Título da mensagem |
instancia | string | Não | ID da instância do WhatsApp |
O número de telefone deve incluir o código do país. Exemplos:
O parâmetro buttons
deve ser um array de objetos com a seguinte
estrutura:
[
{
"id": "botao1",
"text": "Texto do botão 1"
},
{
"name": "cta_url",
"buttonParamsJson": "{\"display_text\": \"Texto do botão\", \"url\": \"https://exemplo.com\"}"
}
]
Tipos de botões suportados:
Limitações: Máximo de 3 botões por mensagem.
{
"telefone": "5511999999999",
"text": "Escolha uma opção:",
"footer": "API Fácil - Sistema de WhatsApp Bot",
"title": "🎉 Bem-vindo!",
"buttons": [
{
"id": "status",
"text": "📊 Ver Status"
},
{
"name": "cta_url",
"buttonParamsJson": "{\"display_text\": \"🌐 Acessar Dashboard\", \"url\": \"https://example.com\"}"
}
],
"instancia": "12345"
}
curl -X POST "https://apifacil.dev/api/v1/whatsapp/enviar-botao" \
-H "Authorization: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"telefone": "5511999999999",
"text": "Escolha uma opção:",
"footer": "API Fácil - Sistema de WhatsApp Bot",
"title": "🎉 Bem-vindo!",
"buttons": [
{
"id": "status",
"text": "📊 Ver Status"
},
{
"name": "cta_url",
"buttonParamsJson": "{\"display_text\": \"🌐 Acessar Dashboard\", \"url\": \"https://example.com\"}"
}
],
"instancia": "12345"
}'
{
"error": false,
"data": {
"notificacao_id": 123,
"message": "Botão adicionado na fila para processamento"
}
}
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.dev/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-foto-64
Envie imagens codificadas em Base64 para seus contatos no WhatsApp
Este endpoint permite enviar fotos em formato Base64 diretamente para seus contatos no WhatsApp, sem a necessidade de hospedar a imagem em um servidor externo.
POST /api/v1/whatsapp/enviar-foto-64
Parâmetro | Tipo | Descrição | Obrigatório |
---|---|---|---|
telefone | string | Número do WhatsApp (com DDD) | Sim |
foto_base64 | string | Imagem em formato Base64 | Sim |
nome | string | Nome ou legenda da foto | Sim |
instancia | string | ID da instância do WhatsApp | Não |
{ "telefone": "5511999999999", "foto_base64": "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcG...", "nome": "Imagem de produto", "instancia": "abcd1234" }
curl -X POST https://apifacil.dev/api/v1/whatsapp/enviar-foto-64 \ -H 'Content-Type: application/json' \ -H 'Authorization: sua_chave_de_api' \ -d '{ "telefone": "5511999999999", "foto_base64": "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcG...", "nome": "Imagem de produto", "instancia": "abcd1234" }'
{ "error": false, "data": { "queue": true, "message": "Foto em fila para envio" } }
Dica: A imagem deve estar codificada em Base64 sem o prefixo "data:image/jpeg;base64,". Os formatos mais compatíveis com WhatsApp são JPG e PNG.
Endpoint para enviar arquivos através do WhatsApp usando uma URL. Este método é ideal quando você tem arquivos hospedados em servidores externos ou CDNs.
Parâmetro | Tipo | Descrição |
---|---|---|
link | string | URL do arquivo a ser enviado |
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) |
{
"link": "https://example.com/documento.pdf",
"nome": "documento.pdf",
"telefone": "11999999999",
"mensagem": "Segue o documento solicitado",
"instancia": "123"
}
curl --location 'https://apifacil.dev/api/v1/whatsapp/enviar-arquivo' \
--header 'Authorization: seu_token_aqui' \
--header 'Content-Type: application/json' \
--data '{
"link": "https://example.com/documento.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 arquivo deve estar acessível publicamente através da URL fornecida. A API fará o download do arquivo para processamento antes do envio via WhatsApp.
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"
}'
POST /api/v1/whatsapp/enviar-audio-64
Envie arquivos de áudio codificados em Base64 para seus contatos no WhatsApp
Este endpoint permite enviar áudios em formato Base64 diretamente para seus contatos no WhatsApp, sem a necessidade de hospedar o arquivo em um servidor externo.
POST /api/v1/whatsapp/enviar-audio-64
Parâmetro | Tipo | Descrição | Obrigatório |
---|---|---|---|
telefone | string | Número do WhatsApp (com DDD) | Sim |
audio_base64 | string | Arquivo de áudio em formato Base64 | Sim |
instancia | string | ID da instância do WhatsApp | Não |
{ "telefone": "5511999999999", "audio_base64": "UklGRiSAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YTAAAAA...", "instancia": "abcd1234" }
curl -X POST https://apifacil.dev/api/v1/whatsapp/enviar-audio-64 \ -H 'Content-Type: application/json' \ -H 'Authorization: sua_chave_de_api' \ -d '{ "telefone": "5511999999999", "audio_base64": "UklGRiSAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YTAAAAA...", "instancia": "abcd1234" }'
{ "error": false, "data": { "queue": true, "message": "Áudio em fila para envio" } }
Dica: O áudio deve estar codificado em Base64. Para áudios enviados via WhatsApp, recomenda-se o formato OGG, que tem melhor compatibilidade.
POST /api/v1/whatsapp/enviar-video
Envia um vídeo via WhatsApp
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
telefone | string | Sim | Número do WhatsApp com DDD (ex: 5551999999999) |
video_url | string | Sim | URL do vídeo (deve ser uma URL válida) |
nome | string | Sim | Nome/título do vídeo |
mensagem | string | Não | Mensagem/legenda do vídeo |
instancia | string | Não | ID da instância do WhatsApp |
{
"telefone": "5551999999999",
"video_url": "https://example.com/video.mp4",
"nome": "Vídeo de demonstração",
"mensagem": "Confira este vídeo incrível!",
"instancia": "12345"
}
curl -X POST "https://apifacil.dev/api/v1/whatsapp/enviar-video" \
-H "Authorization: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"telefone": "5551999999999",
"video_url": "https://example.com/video.mp4",
"nome": "Vídeo de demonstração",
"mensagem": "Confira este vídeo incrível!",
"instancia": "12345"
}'
{
"error": false,
"message": "",
"data": {
"notificacao_id": 12345,
"message": "Vídeo adicionado na fila para processamento"
}
}
{
"error": true,
"message": "Erro de validação",
"data": {
"errors": {
"telefone": ["O telefone é obrigatório"],
"video_url": ["A URL do vídeo é obrigatória", "A URL do vídeo deve ser válida"],
"nome": ["O nome do vídeo é obrigatório"]
}
}
}
Código | Status | Descrição |
---|---|---|
200 | OK | Vídeo enviado com sucesso |
400 | Bad Request | Dados inválidos ou malformados |
401 | Unauthorized | Token de autenticação inválido |
422 | Unprocessable Entity | Erro de validação dos dados |
500 | Internal Server Error | Erro interno do servidor |
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"
}'