IZAPP API
API REST para envio de mensagens WhatsApp via Cloud API da Meta. Multi-tenant com autenticação por API Key.
Base URL
https://wb.iztec.online
Autenticação
Todas as requisições devem incluir o header X-API-Key com o token da empresa.
O token é gerado ao cadastrar a empresa no painel administrativo.
X-API-Key: seu_token_aqui
Respostas de erro de autenticação:
// 401 - Token ausente
{"success": false, "error": "API key is required (X-API-Key header)"}
// 401 - Token inválido
{"success": false, "error": "Invalid API key"}
// 403 - Empresa inativa
{"success": false, "error": "Company is inactive"}
Erros
Todas as respostas de erro seguem o formato padrão:
{
"success": false,
"error": "Descrição do erro"
}
| Código HTTP | Significado |
|---|---|
| 400 | Requisição inválida / erro no envio |
| 401 | Autenticação necessária ou token inválido |
| 403 | Empresa inativa |
| 404 | Rota não encontrada |
| 422 | Campos obrigatórios ausentes |
Listar Templates
GET
/api/whatsapp/templates
X-API-Key
Retorna todos os templates WhatsApp sincronizados da empresa autenticada.
Query Parameters
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
status |
string | opcional | Filtrar por status: APPROVED, PENDING, REJECTED |
Exemplo
curl -X GET "https://wb.iztec.online/api/whatsapp/templates?status=APPROVED" \ -H "X-API-Key: seu_token"
const res = await fetch('https://wb.iztec.online/api/whatsapp/templates?status=APPROVED', {
headers: { 'X-API-Key': 'seu_token' },
});
const data = await res.json();
Resposta de Sucesso (200)
{
"success": true,
"data": [
{
"name": "cobranca_vencida",
"language": "pt_BR",
"category": "UTILITY",
"status": "APPROVED",
"components": [
{"type": "HEADER", "format": "IMAGE"},
{"type": "BODY", "text": "Olá {{1}}, sua fatura de R$ {{2}} venceu."},
{"type": "FOOTER", "text": "IZConnect"},
{"type": "BUTTONS", "buttons": [{"type": "URL", "text": "Pagar", "url": "https://pay.com/{{1}}"}]}
]
}
]
}
Enviar Template (Direto)
POST
/api/whatsapp/send
X-API-Key
Envia uma mensagem template WhatsApp diretamente, especificando nome do template, idioma e components.
Body Parameters (JSON)
| Campo | Tipo | Descrição | |
|---|---|---|---|
to | string | obrigatório | Telefone com DDI (ex: 5531999999999) |
template | string | obrigatório | Nome do template na Meta |
language | string | opcional | Código do idioma (default: pt_BR) |
components | array | opcional | Components conforme especificação da Meta |
Exemplo
curl -X POST "https://wb.iztec.online/api/whatsapp/send" \
-H "Content-Type: application/json" \
-H "X-API-Key: seu_token" \
-d '{
"to": "5531999999999",
"template": "hello_world",
"language": "pt_BR",
"components": [
{
"type": "body",
"parameters": [
{"type": "text", "text": "João Silva"},
{"type": "text", "text": "R$ 150,00"}
]
}
]
}'
const res = await fetch('https://wb.iztec.online/api/whatsapp/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'seu_token',
},
body: JSON.stringify({
to: '5531999999999',
template: 'hello_world',
language: 'pt_BR',
components: [{
type: 'body',
parameters: [
{ type: 'text', text: 'João Silva' },
{ type: 'text', text: 'R$ 150,00' },
],
}],
}),
});
const data = await res.json();
$ch = curl_init('https://wb.iztec.online/api/whatsapp/send');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: ' . $token,
],
CURLOPT_POSTFIELDS => json_encode([
'to' => '5531999999999',
'template' => 'hello_world',
'language' => 'pt_BR',
'components' => [[
'type' => 'body',
'parameters' => [
['type' => 'text', 'text' => 'João Silva'],
['type' => 'text', 'text' => 'R$ 150,00'],
],
]],
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Resposta de Sucesso (200)
{
"success": true,
"data": {
"messaging_product": "whatsapp",
"contacts": [{"input": "5531999999999", "wa_id": "5531999999999"}],
"messages": [{"id": "wamid.HBgNNTUzMQ..."}]
}
}
Enviar por Campanha
Recomendado. Ao usar campanhas, o sistema monta automaticamente os components do template. Você só precisa enviar as variáveis e dados extras.
POST
/api/whatsapp/campaign/send
X-API-Key
Envia uma mensagem WhatsApp usando uma campanha pré-configurada. O template e seus components são montados automaticamente.
Body Parameters (JSON)
| Campo | Tipo | Descrição | |
|---|---|---|---|
campaign_id | integer | obrigatório | ID da campanha (visível no painel admin) |
to | string | obrigatório | Telefone com DDI (ex: 5531999999999) |
variables | array | condicional | Valores para {{1}}, {{2}}, etc. do body do template |
header_image | string | condicional | URL pública da imagem (se header for IMAGE) |
header_video | string | condicional | URL pública do vídeo (se header for VIDEO) |
header_document | string | condicional | URL pública do documento (se header for DOCUMENT) |
header_filename | string | opcional | Nome exibido para o documento |
button_url | string|array | condicional | Parte dinâmica da URL do botão |
Exemplo
curl -X POST "https://wb.iztec.online/api/whatsapp/campaign/send" \
-H "Content-Type: application/json" \
-H "X-API-Key: seu_token" \
-d '{
"campaign_id": 1,
"to": "5531999999999",
"variables": ["João Silva", "R$ 150,00", "20/04/2026"],
"header_image": "https://exemplo.com/logo.jpg",
"button_url": "abc123"
}'
const res = await fetch('https://wb.iztec.online/api/whatsapp/campaign/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'seu_token',
},
body: JSON.stringify({
campaign_id: 1,
to: '5531999999999',
variables: ['João Silva', 'R$ 150,00', '20/04/2026'],
header_image: 'https://exemplo.com/logo.jpg',
button_url: 'abc123',
}),
});
const data = await res.json();
$ch = curl_init('https://wb.iztec.online/api/whatsapp/campaign/send');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: ' . $token,
],
CURLOPT_POSTFIELDS => json_encode([
'campaign_id' => 1,
'to' => '5531999999999',
'variables' => ['João Silva', 'R$ 150,00', '20/04/2026'],
'header_image' => 'https://exemplo.com/logo.jpg',
'button_url' => 'abc123',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Resposta de Sucesso (200)
{
"success": true,
"data": {
"messaging_product": "whatsapp",
"contacts": [{"input": "5531999999999", "wa_id": "5531999999999"}],
"messages": [{"id": "wamid.HBgNNTUzMQ..."}]
}
}
Erros Comuns
// Campanha não encontrada ou inativa
{"success": false, "error": "Campaign not found or inactive"}
// Config WhatsApp inativa
{"success": false, "error": "WhatsApp config is inactive"}
// Template não aprovado
{"success": false, "error": "Template is not approved (status: PENDING)"}
// Telefone inválido
{"success": false, "error": "Invalid phone number"}
IZAPP API · WhatsApp Cloud API Integration · Painel Admin