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 HTTPSignificado
400Requisição inválida / erro no envio
401Autenticação necessária ou token inválido
403Empresa inativa
404Rota não encontrada
422Campos obrigatórios ausentes

Listar Templates

GET /api/whatsapp/templates X-API-Key

Retorna todos os templates WhatsApp sincronizados da empresa autenticada.

Query Parameters

ParâmetroTipoDescriçã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)

CampoTipoDescrição
tostringobrigatórioTelefone com DDI (ex: 5531999999999)
templatestringobrigatórioNome do template na Meta
languagestringopcionalCódigo do idioma (default: pt_BR)
componentsarrayopcionalComponents 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)

CampoTipoDescrição
campaign_idintegerobrigatórioID da campanha (visível no painel admin)
tostringobrigatórioTelefone com DDI (ex: 5531999999999)
variablesarraycondicionalValores para {{1}}, {{2}}, etc. do body do template
header_imagestringcondicionalURL pública da imagem (se header for IMAGE)
header_videostringcondicionalURL pública do vídeo (se header for VIDEO)
header_documentstringcondicionalURL pública do documento (se header for DOCUMENT)
header_filenamestringopcionalNome exibido para o documento
button_urlstring|arraycondicionalParte 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