Integre o SendZap com qualquer sistema usando nossa API RESTful. Envie mensagens, botões, carrosséis e cobranças PIX.
URL Base: https://use.sendzap.online/api
Autenticação: Authorization: Bearer SUA_API_KEY
O sistema suporta múltiplas sessões por usuário. Cada sessão representa um número de WhatsApp diferente.
Use o parâmetro sessionName para especificar qual sessão utilizar. Se não especificado, usa "default".
Exemplos de nomes: vendas, suporte, marketing, default
curl -X GET https://use.sendzap.online/api/health
Resposta:
{
"success": true,
"message": "API WhatsApp está funcionando"
}
curl -X POST https://use.sendzap.online/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "seu@email.com",
"password": "sua_senha"
}'
Resposta:
{
"success": true,
"user": {
"id": 1,
"name": "Seu Nome",
"email": "seu@email.com",
"api_key": "wapi_sua_api_key_aqui"
}
}
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
# Conectar sessão padrão
curl -X POST https://use.sendzap.online/api/whatsapp/connect \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "default"
}'
# Conectar sessão de vendas
curl -X POST https://use.sendzap.online/api/whatsapp/connect \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "vendas"
}'
Resposta:
{
"success": true,
"message": "Sessão iniciada, aguardando QR Code",
"status": "connecting"
}
| Query | Tipo | Descrição |
|---|---|---|
sessionName | string | Nome da sessão (padrão: "default") |
# Status da sessão padrão
curl -X GET "https://use.sendzap.online/api/whatsapp/status?sessionName=default" \
-H "Authorization: Bearer SUA_API_KEY"
# Status da sessão de vendas
curl -X GET "https://use.sendzap.online/api/whatsapp/status?sessionName=vendas" \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"status": "connected",
"phone": "5511999999999",
"connected": true
}
| Query | Tipo | Descrição |
|---|---|---|
sessionName | string | Nome da sessão (padrão: "default") |
curl -X GET "https://use.sendzap.online/api/whatsapp/qrcode?sessionName=vendas" \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"qrCode": "data:image/png;base64,iVBORw0KGgo..."
}
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
phone | string | Sim | Número com DDI+DDD (ex: 5511999999999) |
message | string | Sim | Texto da mensagem |
# Enviar pela sessão padrão
curl -X POST https://use.sendzap.online/api/whatsapp/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"message": "Olá! Esta é uma mensagem de teste."
}'
# Enviar pela sessão de vendas
curl -X POST https://use.sendzap.online/api/whatsapp/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "vendas",
"phone": "5511999999999",
"message": "Olá! Aqui é a equipe de vendas."
}'
# Enviar pela sessão de suporte
curl -X POST https://use.sendzap.online/api/whatsapp/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "suporte",
"phone": "5511999999999",
"message": "Olá! Aqui é o suporte técnico."
}'
Resposta Sucesso:
{
"success": true,
"message": "Mensagem enviada com sucesso",
"messageId": "true_5511999999999@c.us_3EB0A7B4"
}
Resposta Erro:
{
"success": false,
"error": "WhatsApp não está conectado."
}
Os disparos são processados em background. Você pode criar um disparo, fechar a página, e acompanhar o progresso depois. Suporta pausar, retomar e cancelar.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
name | string | Não | Nome/identificador do disparo |
message | string | Sim | Mensagem a ser enviada |
phones | array | Sim | Lista de números (strings) |
delay | number | Não | Intervalo em ms (padrão: 3000) |
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "vendas",
"name": "Campanha Black Friday",
"message": "Aproveite nossas promocoes! Ate 50% de desconto.",
"phones": ["5511999999999", "5511888888888", "5511777777777"],
"delay": 5000
}'
Resposta:
{
"success": true,
"message": "Disparo criado com sucesso. Processamento iniciado em background.",
"dispatchId": 1,
"totalNumbers": 3
}
| Query | Descrição |
|---|---|
page | Página (padrão: 1) |
limit | Itens por página (padrão: 20) |
curl -X GET "https://use.sendzap.online/api/whatsapp/send-bulk/list?page=1&limit=10" \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"dispatches": [
{
"id": 1,
"name": "Campanha Black Friday",
"session_name": "vendas",
"status": "processing",
"total_numbers": 100,
"sent_count": 45,
"failed_count": 2,
"pending_count": 53,
"created_at": "2024-01-15 10:30:00"
}
],
"pagination": {"page": 1, "limit": 10, "total": 5, "totalPages": 1}
}
curl -X GET https://use.sendzap.online/api/whatsapp/send-bulk/1 \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"dispatch": {
"id": 1,
"name": "Campanha Black Friday",
"message": "Aproveite nossas promocoes!",
"status": "processing",
"total_numbers": 100,
"sent_count": 45,
"failed_count": 2,
"pending_count": 53,
"progress": 47,
"started_at": "2024-01-15 10:30:05",
"recentItems": [...]
}
}
| Query | Descrição |
|---|---|
page | Página (padrão: 1) |
limit | Itens por página (padrão: 50) |
status | Filtrar: pending, sent, failed |
curl -X GET "https://use.sendzap.online/api/whatsapp/send-bulk/1/items?status=failed" \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"items": [
{"id": 1, "phone": "5511999999999", "status": "sent", "processed_at": "2024-01-15 10:30:10"},
{"id": 2, "phone": "5511888888888", "status": "failed", "error_message": "Número inválido"}
],
"pagination": {"page": 1, "limit": 50, "total": 100, "totalPages": 2}
}
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk/1/pause \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"message": "Disparo pausado com sucesso"
}
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk/1/resume \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"message": "Disparo retomado com sucesso"
}
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk/1/cancel \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"message": "Disparo cancelado com sucesso"
}
Envie mensagens com botões clicáveis que aumentam o engajamento. Suporta 5 tipos de botões:
reply - Resposta rápidaurl - Abrir linkcopy - Copiar códigocall - Ligarpix - Pagamento PIX| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
phone | string | Sim | Número com DDI+DDD (ex: 5511999999999) |
title | string | Sim | Título da mensagem (exibido em destaque) |
message | string | Sim | Texto principal da mensagem |
footer | string | Não | Rodapé da mensagem |
buttons | array | Sim | Lista de botões (máximo 3) |
| Tipo | Campos | Descrição |
|---|---|---|
reply | text, id | Resposta rápida |
url | text, url | Abre link no navegador |
copy | text, copyCode | Copia código para área de transferência |
call | text, phoneNumber | Inicia chamada telefônica |
pix | key, keyType*, amount | Pagamento PIX (enviado via novo formato sendPaymentOrder) |
* keyType do PIX é auto-detectado se omitido. Valores: email, cpf, cnpj, phone, random. Campos opcionais do PIX: currency (padrão: "BRL"), name (beneficiário).
# Exemplo: botão de resposta + link + copiar código
curl -X POST https://use.sendzap.online/api/whatsapp/send-buttons \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "vendas",
"phone": "5511999999999",
"title": "Promoção Especial",
"message": "Confira nossa oferta exclusiva! 50% de desconto.",
"footer": "Válido até 30/01",
"buttons": [
{"type": "reply", "text": "Tenho interesse", "id": "btn_interesse"},
{"type": "url", "text": "Ver Produtos", "url": "https://meusite.com/promo"},
{"type": "copy", "text": "Copiar Cupom", "copyCode": "PROMO50"}
]
}'
# Exemplo: botão de ligar
curl -X POST https://use.sendzap.online/api/whatsapp/send-buttons \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"title": "Suporte Técnico",
"message": "Precisa de ajuda? Fale conosco!",
"buttons": [
{"type": "reply", "text": "Abrir Ticket", "id": "btn_ticket"},
{"type": "call", "text": "Ligar Agora", "phoneNumber": "5511988887777"}
]
}'
Resposta Sucesso:
{
"success": true,
"message": "Mensagem com botões enviada com sucesso",
"messageId": "true_5511999999999@c.us_3EB0A7B4"
}
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
name | string | Sim | Nome/identificador do disparo |
title | string | Sim | Título da mensagem com botões |
message | string | Sim | Texto principal da mensagem |
footer | string | Não | Rodapé da mensagem |
contacts | array | Sim | Lista de contatos com phone e name |
buttons | array | Sim | Lista de botões (máximo 3, mesmos tipos acima) |
delayMs | number | Não | Intervalo entre envios em ms (padrão: 3000) |
batchEnabled | boolean | Não | Ativar envio em lotes |
batchSize | number | Não | Tamanho do lote (padrão: 50) |
batchDelay | number | Não | Pausa entre lotes em ms (padrão: 60000) |
# Campanha com botões para múltiplos contatos
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk-buttons \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "marketing",
"name": "Campanha Black Friday",
"title": "Black Friday!",
"message": "Aproveite 70% OFF em toda a loja!",
"footer": "Oferta por tempo limitado",
"contacts": [
{"phone": "5511999999999", "name": "João Silva"},
{"phone": "5511888888888", "name": "Maria Santos"},
{"phone": "5511777777777", "name": "Pedro Oliveira"}
],
"buttons": [
{"type": "url", "text": "Ver Ofertas", "url": "https://meusite.com/bf"},
{"type": "copy", "text": "Copiar Cupom", "copyCode": "BLACK70"},
{"type": "reply", "text": "Quero saber mais", "id": "btn_info"}
],
"delayMs": 5000,
"batchEnabled": true,
"batchSize": 50,
"batchDelay": 60000
}'
# Cobrança via PIX em massa
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk-buttons \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"name": "Cobrança Mensal",
"title": "Fatura Disponível",
"message": "Sua fatura está pronta. Pague via PIX com desconto!",
"contacts": [
{"phone": "5511999999999", "name": "Cliente 1"},
{"phone": "5511888888888", "name": "Cliente 2"}
],
"buttons": [
{"type": "pix", "key": "financeiro@empresa.com", "amount": 5000}
],
"delayMs": 3000
}'
Nota: Botões do tipo pix são automaticamente enviados via o novo formato sendPaymentOrder da Evolution API. O campo amount é em centavos (5000 = R$ 50,00).
{
"success": true,
"message": "Disparo com botões criado com sucesso",
"dispatchId": 15,
"totalContacts": 3,
"estimatedTime": "15 segundos"
}
Envia imagem, vídeo, áudio ou documento para um número. Aceita URL pública ou base64.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
phone | string | Sim | Número com DDI+DDD (ex: 5511999999999) |
mediatype | string | Sim | image, video, audio ou document |
media | string | * | URL pública acessível da mídia |
mediaBase64 | string | * | Base64 com data URI (ex: data:image/png;base64,...) |
file | arquivo | * | Upload direto via multipart/form-data. Use media, mediaBase64 OU file |
caption | string | Não | Legenda que acompanha a mídia (até 1024 caracteres). Para audio, o WhatsApp não exibe legenda — o texto é entregue como mensagem separada logo após o áudio |
fileName | string | Não | Nome do arquivo exibido no WhatsApp |
asVoice | bool | Não | Com mediatype: "audio", envia como mensagem de voz (PTT) em vez de arquivo |
# Enviar imagem por URL
curl -X POST https://use.sendzap.online/api/whatsapp/send-media \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "vendas",
"phone": "5511999999999",
"mediatype": "image",
"media": "https://meusite.com/banner.jpg",
"caption": "Confira nossa promoção de Black Friday! 🎉"
}'
# Enviar PDF por URL
curl -X POST https://use.sendzap.online/api/whatsapp/send-media \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"mediatype": "document",
"media": "https://meusite.com/catalogo.pdf",
"caption": "Segue nosso catálogo completo",
"fileName": "Catalogo2025.pdf"
}'
# Enviar imagem em base64
curl -X POST https://use.sendzap.online/api/whatsapp/send-media \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"mediatype": "image",
"mediaBase64": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"caption": "Imagem enviada do servidor"
}'
Resposta:
{
"success": true,
"message": "Mídia enviada com sucesso",
"messageId": "BAE5A75CB0F39712"
}
Cria um disparo em massa enviando mídia (imagem, vídeo, documento, áudio) para uma lista de contatos. Processa em background.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão |
name | string | Não | Nome da campanha |
contacts | array | * | Array de objetos {"phone":"55...", "name":"João"} |
phones | array | * | Array simples de telefones (alternativa a contacts) |
mediatype | string | Sim | image, video, audio, document |
media | string | * | URL pública da mídia |
mediaBase64 | string | * | Base64 com data URI. Use media OU mediaBase64 |
caption | string | Não | Legenda. Suporta variáveis: {{nome}}, {{primeiro_nome}}, {{telefone}} |
fileName | string | Não | Nome do arquivo |
asVoice | bool | Não | Com mediatype: "audio", cada contato recebe como mensagem de voz (PTT) em vez de arquivo |
delayMs | number | Não | Intervalo entre envios em ms (padrão: 3000) |
batchEnabled | bool | Não | Ativar disparo em lotes |
batchSize | number | Não | Tamanho do lote (padrão: 50) |
batchDelay | number | Não | Pausa entre lotes em ms (padrão: 60000) |
nightPauseEnabled | bool | Não | Ativar pausa noturna |
nightPauseStart | string | Não | Horário de pausa (ex: "22:00") |
nightPauseEnd | string | Não | Horário de retomada (ex: "08:00") |
# Disparo de imagem por URL com legenda personalizada
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk-media \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "marketing",
"name": "Campanha Black Friday",
"contacts": [
{"phone": "5511999999999", "name": "Maria"},
{"phone": "5511888888888", "name": "João"}
],
"mediatype": "image",
"media": "https://meusite.com/banner-bf.jpg",
"caption": "Olá {{nome}}! 🎉 Black Friday com até 70% OFF. Garanta já o seu!",
"delayMs": 15000,
"batchEnabled": true,
"batchSize": 10,
"batchDelay": 300000
}'
# Disparo de PDF
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk-media \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"name": "Envio Catalogo",
"phones": ["5511999999999", "5511888888888"],
"mediatype": "document",
"media": "https://meusite.com/catalogo.pdf",
"caption": "Segue o catálogo com nossos produtos",
"fileName": "Catalogo2025.pdf",
"delayMs": 20000
}'
Resposta:
{
"success": true,
"message": "Disparo de mídia criado com sucesso.",
"dispatchId": 42,
"totalNumbers": 150,
"mediatype": "image"
}
O disparo processa em background. Use GET /whatsapp/send-bulk/:id para acompanhar o progresso.
Recomendação: prefira sempre URL pública para vídeos — base64 de vídeos ocupa muito espaço no banco de dados.
Envia áudio para um número. Por padrão chega como mensagem de voz (PTT) —
com ícone de microfone e forma de onda, como se tivesse sido gravada na hora, e o destinatário
vê "gravando áudio..." antes de receber. O áudio é convertido automaticamente para o formato
nativo do WhatsApp (ogg/opus), então você pode enviar mp3, wav,
m4a, ogg ou opus.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
phone | string | Sim | Número com DDI+DDD (ex: 5511999999999) |
audio | string | * | URL pública do áudio |
audioBase64 | string | * | Base64 com data URI (ex: data:audio/mpeg;base64,...) |
file | arquivo | * | Upload direto do arquivo via multipart/form-data. Use audio, audioBase64 OU file |
audioType | string | Não | "recorded" (padrão) = chega como áudio gravado na hora (PTT, microfone + forma de onda). "file" = chega como arquivo de áudio (player de música) |
caption | string | Não | O WhatsApp não exibe legenda em áudio — o texto é enviado como mensagem separada logo após o áudio |
# Áudio GRAVADO (PTT) por URL — comportamento padrão
curl -X POST https://use.sendzap.online/api/whatsapp/send-audio \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "vendas",
"phone": "5511999999999",
"audio": "https://meusite.com/boas-vindas.mp3",
"audioType": "recorded"
}'
# Áudio como ARQUIVO (player de música, não voz)
curl -X POST https://use.sendzap.online/api/whatsapp/send-audio \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"audio": "https://meusite.com/podcast-ep1.mp3",
"audioType": "file"
}'
# Upload direto do arquivo (multipart/form-data — sem precisar de URL nem base64)
curl -X POST https://use.sendzap.online/api/whatsapp/send-audio \
-H "Authorization: Bearer SUA_API_KEY" \
-F "phone=5511999999999" \
-F "audioType=recorded" \
-F "file=@/caminho/do/audio.mp3"
# Áudio gravado em base64
curl -X POST https://use.sendzap.online/api/whatsapp/send-audio \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"audioBase64": "data:audio/mpeg;base64,SUQzBAAAAAAA..."
}'
Resposta:
{
"success": true,
"message": "Mídia enviada com sucesso",
"messageId": "BAE5A75CB0F39712"
}
O campo asVoice (bool) continua aceito como alternativa ao audioType.
Tamanho máximo: 50MB no upload; recomendado até 16MB (limite do WhatsApp para áudio).
Cria um disparo em massa de áudio para uma lista de contatos. Por padrão cada contato recebe como mensagem de voz (PTT). Processa em background com os mesmos controles do disparo de mídia: delay entre envios, lotes e pausa noturna.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão |
name | string | Não | Nome da campanha |
contacts | array | * | Array de objetos {"phone":"55...", "name":"João"} |
phones | array | * | Array simples de telefones (alternativa a contacts) |
audio | string | * | URL pública do áudio (recomendado para listas grandes) |
audioBase64 | string | * | Base64 com data URI. Use audio OU audioBase64 |
audioType | string | Não | "recorded" (padrão) = áudio gravado (PTT). "file" = arquivo de áudio |
caption | string | Não | Texto enviado após o áudio. Suporta {{nome}}, {{primeiro_nome}}, {{telefone}} |
delayMs | number | Não | Intervalo entre envios em ms (padrão: 3000) |
batchEnabled / batchSize / batchDelay | — | Não | Disparo em lotes (mesmos parâmetros do send-bulk-media) |
nightPauseEnabled / nightPauseStart / nightPauseEnd | — | Não | Pausa noturna (mesmos parâmetros do send-bulk-media) |
# Disparo de mensagem de voz com texto complementar
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk-audio \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "marketing",
"name": "Convite em Audio",
"contacts": [
{"phone": "5511999999999", "name": "Maria"},
{"phone": "5511888888888", "name": "João"}
],
"audio": "https://meusite.com/convite.mp3",
"caption": "Olá {{nome}}! Ouça o convite especial que gravamos para você 🎧",
"delayMs": 15000
}'
Resposta:
{
"success": true,
"message": "Disparo de mídia criado com sucesso.",
"dispatchId": 43,
"totalNumbers": 2,
"mediatype": "audio"
}
Recomendação: para listas grandes use sempre audio (URL pública) em vez de base64 —
o base64 fica armazenado no banco e é reprocessado a cada contato.
Envia uma mensagem rica com imagem (opcional), texto, título, rodapé e até 3 botões interativos: resposta rápida, abrir link, ligar ou copiar código. Sem imagem, envia texto + botões.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
phone | string | Sim | Número com DDI+DDD |
imageUrl | string | Não | URL pública da imagem |
imageBase64 | string | Não | Imagem em base64 com data URI (ex: data:image/png;base64,...) |
caption | string | Sim | Texto do corpo da mensagem |
title | string | Não | Título em negrito acima do texto |
footer | string | Não | Rodapé em fonte menor |
buttons | array | Sim | 1 a 3 botões (veja estrutura abaixo) |
Estrutura de cada botão:
type | Campos | Ação |
|---|---|---|
reply | text | Resposta rápida — envia o texto do botão de volta |
url | text, url | Abre o link no navegador |
call | text, phoneNumber | Inicia uma ligação para o número |
copy | text, copyCode | Copia o código para a área de transferência (ex: cupom) |
text) até 25 caracteres
(acima disso é cortado automaticamente); title e footer recomendados até 60 caracteres;
caption até 1024 caracteres.
# Imagem por URL + 3 botões
curl -X POST https://use.sendzap.online/api/whatsapp/send-media-buttons \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "vendas",
"phone": "5511999999999",
"imageUrl": "https://meusite.com/banner.jpg",
"title": "Promoção Especial",
"caption": "Aproveite 50% OFF em todos os produtos até domingo!",
"footer": "Powered by SendZap",
"buttons": [
{"type": "url", "text": "Ver Ofertas", "url": "https://meusite.com/ofertas"},
{"type": "copy", "text": "Copiar Cupom", "copyCode": "DESCONTO50"},
{"type": "reply", "text": "Falar com Vendedor"}
]
}'
# Imagem em base64 (upload direto, sem hospedar)
curl -X POST https://use.sendzap.online/api/whatsapp/send-media-buttons \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"imageBase64": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"caption": "Confira o catálogo desta semana!",
"buttons": [
{"type": "call", "text": "Ligar Agora", "phoneNumber": "5511988887777"}
]
}'
Resposta:
{
"success": true,
"message": "Mensagem enviada com sucesso",
"messageId": "BAE5A75CB0F39712"
}
Cria um disparo em massa de imagem + texto + botões interativos. Processa em background com delay entre envios, lotes e pausa noturna.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão |
name | string | Não | Nome da campanha |
contacts | array | * | Array de objetos {"phone":"55...", "name":"João"} |
phones | array | * | Array simples de telefones (alternativa a contacts) |
imageUrl | string | Não | URL pública da imagem (recomendado para listas grandes) |
imageBase64 | string | Não | Imagem em base64 com data URI |
caption | string | Sim | Texto do corpo. Suporta {{nome}}, {{primeiro_nome}}, {{telefone}} |
title / footer | string | Não | Título e rodapé |
buttons | array | Sim | 1 a 3 botões (mesma estrutura do send-media-buttons) |
delayMs | number | Não | Intervalo entre envios em ms (padrão: 3000) |
batchEnabled / batchSize / batchDelay | — | Não | Disparo em lotes |
nightPauseEnabled / nightPauseStart / nightPauseEnd | — | Não | Pausa noturna |
curl -X POST https://use.sendzap.online/api/whatsapp/send-bulk-media-buttons \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "marketing",
"name": "Campanha Cupom",
"contacts": [
{"phone": "5511999999999", "name": "Maria"},
{"phone": "5511888888888", "name": "João"}
],
"imageUrl": "https://meusite.com/banner-cupom.jpg",
"title": "Oferta Exclusiva",
"caption": "Olá {{nome}}! Liberamos um cupom exclusivo para você 🎁",
"footer": "Válido até domingo",
"buttons": [
{"type": "url", "text": "Comprar Agora", "url": "https://meusite.com/loja"},
{"type": "copy", "text": "Copiar Cupom", "copyCode": "VIP20"}
],
"delayMs": 15000,
"batchEnabled": true,
"batchSize": 20,
"batchDelay": 120000
}'
Resposta:
{
"success": true,
"message": "Disparo Imagem+Botões criado com sucesso.",
"dispatchId": 44,
"totalNumbers": 2
}
Acompanhe o progresso com GET /whatsapp/send-bulk/:id.
Envia um pagamento PIX usando o novo formato sendPaymentOrder da Evolution API. Gera um botão nativo de pagamento no WhatsApp.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
phone | string | Sim | Número com DDI+DDD |
pixKey | string | Sim | Chave PIX (e-mail, CPF, CNPJ, telefone ou aleatória) |
keyType | string | Não | Tipo da chave: email, cpf, cnpj, phone, random (auto-detectado se omitido) |
amount | number | Não | Valor em centavos (padrão: 100 = R$ 1,00) |
merchantName | string | Não | Nome do beneficiário |
# Enviar PIX por e-mail
curl -X POST https://use.sendzap.online/api/whatsapp/send-pix \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"pixKey": "pix@minhaloja.com",
"amount": 5000,
"merchantName": "Minha Loja"
}'
# Enviar PIX por CPF (keyType auto-detectado)
curl -X POST https://use.sendzap.online/api/whatsapp/send-pix \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"pixKey": "12345678901",
"amount": 15000
}'
Resposta:
{
"success": true,
"message": "PIX enviado com sucesso",
"messageId": "3EB0A7B4..."
}
Envia um pedido de pagamento completo com lista de produtos e métodos de pagamento (PIX, boleto, cartão).
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão |
phone | string | Sim | Número com DDI+DDD |
items | array | Sim | Lista de produtos (amount, name, quantity) |
paymentSettings | array | Sim | Métodos de pagamento (PIX, boleto, cartão) |
curl -X POST https://use.sendzap.online/api/whatsapp/send-payment-order \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"items": [
{"amount": 2500, "name": "Produto X", "quantity": 2},
{"amount": 1000, "name": "Frete", "quantity": 1}
],
"paymentSettings": [
{
"type": "pix_static_code",
"pix_static_code": {
"key": "pix@loja.com",
"key_type": "EMAIL",
"merchant_name": "Minha Loja"
}
},
{
"type": "cards",
"cards": {"enabled": false}
}
]
}'
Campos do item:
| Campo | Descrição |
|---|---|
amount | Valor em centavos (2500 = R$ 25,00) |
name | Nome do produto |
quantity | Quantidade |
retailer_id | ID do produto (opcional, gerado automaticamente) |
| Tipo | Descrição |
|---|---|
pix_static_code | PIX com chave estática (key, key_type: PHONE/EMAIL/CPF/CNPJ/EVP, merchant_name) |
boleto | Boleto bancário (digitable_line: linha digitável) |
cards | Cartão de crédito (enabled: true/false) |
{
"success": true,
"message": "Pedido de pagamento enviado com sucesso",
"messageId": "3EB0A7B4..."
}
Envia um carrossel com múltiplos cards (imagens + botões) que o usuário pode deslizar horizontalmente.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão |
phone | string | Sim | Número com DDI+DDD |
title | string | Sim | Título do carrossel |
description | string | Não | Descrição abaixo do título |
footer | string | Não | Rodapé |
cards | array | Sim | Lista de cards |
| Campo | Obrigatório | Descrição |
|---|---|---|
thumbnailUrl | Sim | URL da imagem do card |
text | Não | Texto do card |
buttons | Não | Botões do card (reply, url, call) |
curl -X POST https://use.sendzap.online/api/whatsapp/send-carousel \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"phone": "5511999999999",
"title": "Nossos Imóveis",
"description": "Confira as melhores opções",
"footer": "Imobiliária XYZ",
"cards": [
{
"text": "Casa 3 quartos - R$ 450.000",
"thumbnailUrl": "https://exemplo.com/casa1.jpg",
"buttons": [
{"type": "url", "displayText": "Ver Detalhes", "url": "https://exemplo.com/imovel/1"},
{"type": "call", "displayText": "Ligar", "phoneNumber": "5511988887777"}
]
},
{
"text": "Apartamento 2 quartos - R$ 320.000",
"thumbnailUrl": "https://exemplo.com/apto1.jpg",
"buttons": [
{"type": "url", "displayText": "Ver Detalhes", "url": "https://exemplo.com/imovel/2"},
{"type": "reply", "displayText": "Quero visitar", "id": "visit_2"}
]
},
{
"thumbnailUrl": "https://exemplo.com/terreno1.jpg",
"buttons": [
{"type": "url", "displayText": "Ver no Mapa", "url": "https://exemplo.com/mapa/3"},
{"type": "call", "displayText": "Falar com corretor", "phoneNumber": "5511977776666"},
{"type": "reply", "displayText": "Mais Info", "id": "info_3"}
]
}
]
}'
Resposta:
{
"success": true,
"message": "Carousel enviado com sucesso",
"messageId": "3EB0A7B4..."
}
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
curl -X POST https://use.sendzap.online/api/whatsapp/disconnect \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "vendas"
}'
Resposta:
{
"success": true,
"message": "Sessão desconectada"
}
curl -X GET https://use.sendzap.online/api/whatsapp/sessions \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"sessions": [
{"id": 1, "session_name": "default", "phone": "5511999999999", "status": "connected"},
{"id": 2, "session_name": "vendas", "phone": "5511888888888", "status": "connected"},
{"id": 3, "session_name": "suporte", "phone": null, "status": "disconnected"}
]
}
| Query | Descrição |
|---|---|
page | Página (padrão: 1) |
limit | Itens por página (padrão: 50) |
status | Filtrar: sent, failed, pending |
phone | Filtrar por número |
curl -X GET "https://use.sendzap.online/api/whatsapp/messages?page=1&limit=20" \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"messages": [
{"id": 1, "phone_to": "5511999999999", "message": "Olá!", "status": "sent"}
],
"pagination": {"page": 1, "limit": 20, "total": 100, "totalPages": 5}
}
curl -X GET https://use.sendzap.online/api/whatsapp/stats \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"stats": {
"totalMessages": 1500,
"sentMessages": 1450,
"failedMessages": 50,
"todayMessages": 75,
"activeSessions": 2
}
}
Retorna informações completas sobre créditos, custos, instâncias e assinatura do usuário.
curl -X GET https://use.sendzap.online/api/user/wallet \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"wallet": {
"credits": 500,
"costs": {
"single": 1,
"bulk": 1
},
"instances": {
"total": 3,
"connected": 2,
"limit": 5,
"free": 1
},
"subscription": {
"active": true,
"plan_name": "Plano Pro",
"instances_added": 4,
"monthly_cost": 50,
"status": "active",
"next_billing_date": "2024-02-15"
},
"recent_transactions": [
{
"id": 123,
"amount": -50,
"type": "debit",
"description": "Disparo em massa \"Campanha\" - 50 mensagens enviadas",
"created_at": "2024-01-15 10:30:00"
},
{
"id": 122,
"amount": 100,
"type": "credit",
"description": "Compra de créditos - Plano Básico",
"created_at": "2024-01-14 09:00:00"
}
]
}
}
Campos importantes:
| Campo | Descrição |
|---|---|
credits | Saldo atual de créditos disponíveis |
costs.single | Custo por mensagem individual |
costs.bulk | Custo por mensagem em disparo em massa |
instances.total | Total de instâncias criadas |
instances.connected | Instâncias atualmente conectadas |
instances.limit | Limite máximo de instâncias permitidas |
subscription | Informações da assinatura de instâncias (null se não houver) |
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
phone | string | Sim | Número no formato: código país + DDD + número (ex: 5511999999999) |
curl -X POST https://use.sendzap.online/api/whatsapp/check-number \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "default",
"phone": "5511999999999"
}'
Resposta (número válido com foto):
{
"success": true,
"exists": true,
"number": "5511999999999",
"jid": "5511999999999@s.whatsapp.net",
"isBusiness": false,
"profilePicture": "https://pps.whatsapp.net/v/t61.24694-24/..."
}
Resposta (número válido sem foto de perfil):
{
"success": true,
"exists": true,
"number": "5511999999999",
"jid": "5511999999999@s.whatsapp.net",
"isBusiness": false,
"profilePicture": null
}
Resposta (número inválido):
{
"success": true,
"exists": false,
"number": "5511999999999",
"jid": null,
"isBusiness": false,
"profilePicture": null
}
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sessionName | string | Não | Nome da sessão (padrão: "default") |
phones | array | Sim | Array de números. Máximo: 5.000 por requisição |
curl -X POST https://use.sendzap.online/api/whatsapp/check-numbers \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "default",
"phones": [
"5511999999999",
"5521988887777",
"5531977776666"
]
}'
Resposta:
{
"success": true,
"total": 3,
"valid": 2,
"invalid": 1,
"numbers": [
{
"number": "5511999999999",
"exists": true,
"jid": "5511999999999@s.whatsapp.net",
"isBusiness": false,
"profilePicture": "https://pps.whatsapp.net/v/t61.24694-24/..."
},
{
"number": "5521988887777",
"exists": true,
"jid": "5521988887777@s.whatsapp.net",
"isBusiness": true,
"profilePicture": null
},
{
"number": "5531977776666",
"exists": false,
"jid": null,
"isBusiness": false,
"profilePicture": null
}
]
}
profilePicture retorna null se o número não tiver foto ou a privacidade do contato não permitircurl -X POST https://use.sendzap.online/api/user/regenerate-key \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY"
Resposta:
{
"success": true,
"message": "API Key regenerada com sucesso",
"api_key": "wapi_nova_api_key_aqui"
}
# 1. Criar e conectar sessão de vendas
curl -X POST https://use.sendzap.online/api/whatsapp/connect \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{"sessionName": "vendas"}'
# 2. Criar e conectar sessão de suporte
curl -X POST https://use.sendzap.online/api/whatsapp/connect \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{"sessionName": "suporte"}'
# 3. Obter QR Code de cada sessão (escaneie com WhatsApp)
curl -X GET "https://use.sendzap.online/api/whatsapp/qrcode?sessionName=vendas" \
-H "Authorization: Bearer SUA_API_KEY"
curl -X GET "https://use.sendzap.online/api/whatsapp/qrcode?sessionName=suporte" \
-H "Authorization: Bearer SUA_API_KEY"
# 4. Listar todas as sessões
curl -X GET https://use.sendzap.online/api/whatsapp/sessions \
-H "Authorization: Bearer SUA_API_KEY"
# 5. Enviar mensagem pela sessão de vendas
curl -X POST https://use.sendzap.online/api/whatsapp/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "vendas",
"phone": "5511999999999",
"message": "Olá! Aqui é a equipe de vendas."
}'
# 6. Enviar mensagem pela sessão de suporte
curl -X POST https://use.sendzap.online/api/whatsapp/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{
"sessionName": "suporte",
"phone": "5511999999999",
"message": "Olá! Aqui é o suporte técnico."
}'
Sempre use: código do país + DDD + número
| Correto | Errado |
|---|---|
5511999999999 | 11999999999 |
5521988887777 | (21) 98888-7777 |
5531977776666 | +55 31 97777-6666 |
| Código | Descrição |
|---|---|
200 | Sucesso |
400 | Parâmetros inválidos |
401 | API Key inválida ou não fornecida |
404 | Sessão não encontrada |
500 | Erro interno do servidor |