WhatsApp Business API

Documentacao completa da API WhatsApp Business da Lidmo. Integre mensagens do WhatsApp na sua aplicacao de forma programatica com nossa API RESTful.

Meta BSP Oficial -- A Lidmo e um Business Solution Provider (BSP) oficial da Meta. Todos os recursos da WhatsApp Cloud API estao disponiveis atraves da nossa plataforma, com suporte completo e cobranca transparente.

1. Introducao

A Lidmo oferece uma API RESTful completa para integracao com o WhatsApp Business. Como BSP oficial da Meta, fornecemos acesso direto a todos os recursos da WhatsApp Cloud API com uma camada simplificada de autenticacao, billing e monitoramento.

Principais recursos

  • API RESTful -- Endpoints simples e bem documentados para todos os tipos de mensagem
  • Webhooks em tempo real -- Receba mensagens e notificacoes de status instantaneamente
  • Modelo pay-per-use -- R$ 0,05 por chamada de API, sem mensalidade fixa
  • Dashboard completo -- Logs, analytics e gestao de numeros em um unico painel
  • Multiplos numeros -- Gerencie diversos numeros WhatsApp Business em uma unica conta

Base URL

https://api.lidmo.com.br

Todas as requisicoes a API devem usar HTTPS. Requisicoes HTTP serao rejeitadas. A API aceita e retorna dados exclusivamente no formato JSON.

2. Autenticacao

A API utiliza autenticacao via OAuth2 Bearer Token. Todas as requisicoes devem incluir o token no header Authorization.

Obtendo seu token

  1. Acesse o painel da Lidmo
  2. Navegue ate WhatsApp API > Credenciais
  3. Clique em Gerar Token para criar um novo token de acesso
  4. Copie o token gerado -- ele sera exibido apenas uma vez

Usando o token

Inclua o token no header de todas as requisicoes:

Authorization: Bearer {seu_access_token}

Renovacao e expiracao

  • Tokens tem validade de 90 dias por padrao
  • Voce pode gerar novos tokens a qualquer momento pelo dashboard
  • Tokens antigos podem ser revogados individualmente
  • Quando um token expira, a API retorna 401 Unauthorized

Seguranca: Nunca exponha seu token em codigo client-side (JavaScript no navegador, aplicativos moveis). Sempre faca as chamadas a API a partir do seu backend.

3. Quick Start

Siga estes passos para enviar sua primeira mensagem via API em poucos minutos:

Passo 1: Criar conta na Lidmo

Acesse https://lidmo.com.br/register e crie sua conta. Voce tera acesso ao trial de 7 dias.

Passo 2: Adicionar numero WhatsApp Business

No painel, va ate WhatsApp API > Numeros e adicione seu numero de telefone. E necessario que o numero esteja verificado pela Meta atraves do processo de verificacao do WhatsApp Business.

Verificacao Meta: O processo de verificacao pela Meta pode levar de algumas horas a alguns dias. Certifique-se de que sua empresa possui um Facebook Business Manager verificado.

Passo 3: Obter credenciais da API

Em WhatsApp API > Credenciais, gere seu token de acesso. Guarde-o em local seguro.

Passo 4: Enviar primeira mensagem

Use o comando abaixo para enviar sua primeira mensagem de teste:

curl -X POST https://api.lidmo.com.br/whatsapp/send \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "5511999999999",
    "message": "Hello from Lidmo!"
  }'

Resposta de sucesso:

{
  "success": true,
  "data": {
    "message_id": "wamid.HBgNNTUxMTk5OTk5OTk5OQ==",
    "status": "sent",
    "timestamp": 1712345678
  }
}

Importante: Para enviar mensagens fora da janela de 24 horas, voce deve usar um template de mensagem pre-aprovado pela Meta. Mensagens de texto livre so podem ser enviadas dentro da janela de conversa ativa.

4. Enviando Mensagens

A API suporta todos os tipos de mensagem disponiveis no WhatsApp Business. Abaixo voce encontra a documentacao detalhada de cada tipo.

4.1 Mensagens de Texto

O tipo mais simples de mensagem. Envia texto puro para o destinatario.

POST /whatsapp/send

Request body:

{
  "phone": "5511999999999",
  "message": "Your text message here"
}
Campo Tipo Obrigatorio Descricao
phone string Sim Numero do destinatario no formato internacional (ex: 5511999999999)
message string Sim Texto da mensagem (max 4096 caracteres)

Resposta:

{
  "success": true,
  "data": {
    "message_id": "wamid.HBgNNTUxMTk5OTk5OTk5OQ==",
    "status": "sent",
    "timestamp": 1712345678
  }
}

4.2 Mensagens de Midia

Envie imagens, videos, audios e documentos. O campo media_type define o tipo de midia.

POST /whatsapp/send

Tipos de midia suportados:

media_type Formatos aceitos Tamanho maximo
image JPEG, PNG 5 MB
video MP4, 3GPP 16 MB
audio AAC, MP3, OGG, AMR 16 MB
document PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT 100 MB

Exemplo -- Enviando uma imagem:

{
  "phone": "5511999999999",
  "media_type": "image",
  "media_url": "https://example.com/photo.jpg",
  "caption": "Check this out!"
}

Exemplo -- Enviando um documento:

{
  "phone": "5511999999999",
  "media_type": "document",
  "media_url": "https://example.com/invoice.pdf",
  "filename": "invoice.pdf",
  "caption": "Segue sua fatura em anexo."
}
Campo Tipo Obrigatorio Descricao
phone string Sim Numero do destinatario
media_type string Sim Tipo de midia: image, video, audio, document
media_url string Sim URL publica do arquivo de midia (HTTPS)
caption string Nao Legenda da midia (apenas para image e document)
filename string Nao Nome do arquivo (apenas para document)

4.3 Mensagens de Template

Templates sao mensagens pre-aprovadas pela Meta, obrigatorias para iniciar conversas fora da janela de 24 horas. Eles permitem enviar notificacoes proativas como confirmacoes de pedido, lembretes de agendamento e alertas de seguranca.

POST /whatsapp/send-template

Request body:

{
  "phone": "5511999999999",
  "template_name": "order_confirmation",
  "template_language": "pt_BR",
  "components": [
    {
      "type": "body",
      "parameters": [
        { "type": "text", "text": "Joao" },
        { "type": "text", "text": "#12345" }
      ]
    }
  ]
}
Campo Tipo Obrigatorio Descricao
phone string Sim Numero do destinatario
template_name string Sim Nome do template aprovado pela Meta
template_language string Sim Codigo do idioma do template (ex: pt_BR, en_US)
components array Nao Parametros dinamicos do template

Tipos de parametros nos components:

  • text -- Texto simples para substituicao de variaveis
  • currency -- Valor monetario formatado
  • date_time -- Data e hora formatadas
  • image -- Imagem no header do template
  • document -- Documento no header do template
  • video -- Video no header do template

Aprovacao de templates: Templates precisam ser criados e submetidos para aprovacao pela Meta atraves do painel da Lidmo ou diretamente no Facebook Business Manager. O processo de aprovacao geralmente leva de algumas horas a 24 horas.

4.4 Mensagens Interativas

Mensagens interativas permitem que o destinatario interaja com botoes ou listas, proporcionando uma experiencia mais rica e facilitando o fluxo de conversacao.

Botoes de Resposta (ate 3 botoes)

POST /whatsapp/send

{
  "phone": "5511999999999",
  "type": "interactive",
  "interactive": {
    "type": "button",
    "body": {
      "text": "Gostaria de confirmar seu pedido?"
    },
    "action": {
      "buttons": [
        {
          "type": "reply",
          "reply": { "id": "confirm", "title": "Confirmar" }
        },
        {
          "type": "reply",
          "reply": { "id": "cancel", "title": "Cancelar" }
        },
        {
          "type": "reply",
          "reply": { "id": "edit", "title": "Editar Pedido" }
        }
      ]
    }
  }
}

Listas (ate 10 secoes)

{
  "phone": "5511999999999",
  "type": "interactive",
  "interactive": {
    "type": "list",
    "header": {
      "type": "text",
      "text": "Nosso Cardapio"
    },
    "body": {
      "text": "Selecione uma categoria para ver os itens disponiveis:"
    },
    "action": {
      "button": "Ver Opcoes",
      "sections": [
        {
          "title": "Pratos Principais",
          "rows": [
            { "id": "item_1", "title": "Feijoada", "description": "Tradicional feijoada completa" },
            { "id": "item_2", "title": "Moqueca", "description": "Moqueca baiana de peixe" }
          ]
        },
        {
          "title": "Bebidas",
          "rows": [
            { "id": "item_3", "title": "Suco Natural", "description": "Laranja, limao ou maracuja" },
            { "id": "item_4", "title": "Agua de Coco", "description": "Natural gelada" }
          ]
        }
      ]
    }
  }
}

Botoes de Resposta Rapida (Reply Buttons)

Reply buttons permitem que o usuario responda rapidamente tocando em um botao pre-definido. A resposta e registrada como uma mensagem de texto com o id do botao selecionado.

4.5 Mensagens de Localizacao

Envie localizacoes com coordenadas, nome e endereco.

POST /whatsapp/send

{
  "phone": "5511999999999",
  "type": "location",
  "latitude": -23.5505,
  "longitude": -46.6333,
  "name": "Lidmo HQ",
  "address": "Sao Paulo, SP"
}
Campo Tipo Obrigatorio Descricao
phone string Sim Numero do destinatario
type string Sim Deve ser location
latitude number Sim Latitude da localizacao
longitude number Sim Longitude da localizacao
name string Nao Nome do local
address string Nao Endereco do local

4.6 Mensagens de Contato

Compartilhe informacoes de contato diretamente no chat.

POST /whatsapp/send

{
  "phone": "5511999999999",
  "type": "contacts",
  "contacts": [
    {
      "name": {
        "formatted_name": "Suporte Lidmo",
        "first_name": "Suporte",
        "last_name": "Lidmo"
      },
      "phones": [
        { "phone": "+5511999999999", "type": "WORK" }
      ],
      "emails": [
        { "email": "suporte@lidmo.com.br", "type": "WORK" }
      ]
    }
  ]
}

4.7 Mensagens de Reacao

Reaja a uma mensagem existente com um emoji. Util para confirmacoes automaticas.

POST /whatsapp/send

{
  "phone": "5511999999999",
  "type": "reaction",
  "message_id": "wamid.HBgNNTUxMTk5OTk5OTk5OQ==",
  "emoji": "\u2705"
}
Campo Tipo Obrigatorio Descricao
message_id string Sim ID da mensagem a reagir (retornado no envio original)
emoji string Sim Emoji Unicode para a reacao

Para remover uma reacao, envie o mesmo request com emoji como string vazia.

5. Recebendo Mensagens (Webhooks)

Webhooks permitem que voce receba mensagens e notificacoes de status em tempo real. Quando um evento ocorre (mensagem recebida, mensagem entregue, etc.), a Lidmo envia um POST request para a URL configurada no seu painel.

Configurando o webhook

  1. Acesse WhatsApp API > Webhooks no painel
  2. Informe a URL do seu endpoint (deve ser HTTPS)
  3. Defina um Verify Token para validacao
  4. Selecione os eventos que deseja receber
  5. Clique em Salvar e Verificar

Verificacao do webhook (Challenge/Response)

Ao configurar o webhook, a Lidmo faz um GET request para validar a URL. Seu endpoint deve responder com o valor do parametro hub.challenge:

GET https://seu-servidor.com/webhook?hub.mode=subscribe&hub.verify_token=SEU_TOKEN&hub.challenge=CHALLENGE_STRING

Seu servidor deve verificar se hub.verify_token corresponde ao token configurado e retornar o valor de hub.challenge como resposta com status 200.

Eventos disponiveis

Evento Descricao
message.received Uma nova mensagem foi recebida
message.delivered Mensagem foi entregue ao destinatario
message.read Mensagem foi lida pelo destinatario
message.failed Falha na entrega da mensagem
status.changed Mudanca de status de uma mensagem

Payload do webhook

Exemplo de payload para o evento message.received:

{
  "event": "message.received",
  "timestamp": 1712345678,
  "data": {
    "from": "5511999999999",
    "message_id": "wamid.HBgNNTUxMTk5OTk5OTk5OQ==",
    "type": "text",
    "text": "Hello!",
    "timestamp": 1712345678
  }
}

Exemplo de payload para o evento message.delivered:

{
  "event": "message.delivered",
  "timestamp": 1712345680,
  "data": {
    "message_id": "wamid.HBgNNTUxMTk5OTk5OTk5OQ==",
    "recipient": "5511999999999",
    "status": "delivered",
    "timestamp": 1712345680
  }
}

Exemplo de payload para o evento message.failed:

{
  "event": "message.failed",
  "timestamp": 1712345690,
  "data": {
    "message_id": "wamid.HBgNNTUxMTk5OTk5OTk5OQ==",
    "recipient": "5511999999999",
    "error": {
      "code": 131047,
      "title": "Re-engagement message",
      "message": "More than 24 hours have passed since the recipient last replied."
    }
  }
}

Politica de retry

A Lidmo faz ate 5 tentativas de entrega de webhooks em caso de falha. O intervalo entre tentativas segue um backoff exponencial:

  • 1a tentativa: imediata
  • 2a tentativa: apos 1 minuto
  • 3a tentativa: apos 5 minutos
  • 4a tentativa: apos 30 minutos
  • 5a tentativa: apos 2 horas

Seu endpoint deve retornar um status 2xx dentro de 10 segundos. Caso contrario, a tentativa sera considerada como falha.

Seguranca do webhook (verificacao de assinatura)

Cada request de webhook inclui um header X-Lidmo-Signature contendo uma assinatura HMAC-SHA256 do payload. Valide essa assinatura para garantir que o request veio da Lidmo.

// Exemplo de validacao em PHP
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_LIDMO_SIGNATURE'];
$expected = hash_hmac('sha256', $payload, $webhookSecret);

if (!hash_equals($expected, $signature)) {
    http_response_code(403);
    exit('Invalid signature');
}

Seguranca: Sempre valide a assinatura do webhook antes de processar os dados. Requests sem assinatura valida devem ser rejeitados com status 403.

6. Precificacao

A Lidmo cobra uma taxa fixa de R$ 0,05 por chamada de API, acrescida das taxas cobradas pela Meta por conversa. As taxas da Meta variam conforme o tipo de conversa e o pais do destinatario.

Tabela de precos (Brasil)

Tipo de Mensagem Descricao Taxa Meta (USD) Taxa Lidmo Total Aproximado
Authentication OTP, codigos de verificacao $0.0068 R$ 0,05 ~R$ 0,09
Utility Confirmacoes de pedido, atualizacoes $0.0068 R$ 0,05 ~R$ 0,09
Marketing Ofertas, promocoes, campanhas $0.0625 R$ 0,05 ~R$ 0,38
Service Resposta dentro da janela de 24h $0.00 R$ 0,05 R$ 0,05

Modelo baseado em conversas: A Meta cobra por conversa, nao por mensagem individual. Uma conversa aberta dura 24 horas a partir da primeira mensagem entregue. Todas as mensagens dentro dessa janela de 24h sao cobertas pelo mesmo custo de conversa.

Detalhes sobre as janelas de conversa

  • Conversas iniciadas pelo usuario: Quando o usuario envia a primeira mensagem, voce tem 24 horas para responder livremente. A taxa aplicada e a de Service.
  • Conversas iniciadas pela empresa: Quando voce envia a primeira mensagem (via template), a taxa depende da categoria do template: Authentication, Utility ou Marketing.
  • Free Tier: Cada numero WhatsApp Business tem direito a 1.000 conversas gratuitas do tipo Service por mes.

Nota: Os valores da Meta sao em USD e podem variar conforme o pais do destinatario e atualizacoes da propria Meta. Consulte a tabela de precos oficial da Meta para valores atualizados.

7. Rate Limits

Para garantir a estabilidade da plataforma, a API impoe limites de requisicoes por minuto.

Tipo de Endpoint Limite Janela
Endpoints autenticados (envio de mensagens) 120 requests Por minuto
Webhook endpoints (recebimento) 300 requests Por minuto

Quando o limite e atingido, a API retorna status 429 Too Many Requests com o header Retry-After indicando quantos segundos esperar.

HTTP/1.1 429 Too Many Requests
Retry-After: 30

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests. Please retry after 30 seconds."
  }
}

Limites da Meta: Alem dos rate limits da Lidmo, a Meta impoe seus proprios limites baseados na qualidade do seu numero e no tier de mensagens. Numeros novos comecam com limite de 250 conversas por dia, podendo chegar a limites ilimitados conforme o volume e a qualidade.

Tiers de mensagens da Meta

Tier Limite de Conversas/Dia Como alcancar
Tier 1 (inicial) 250 Automatico ao registrar o numero
Tier 2 1.000 Enviar 250 conversas em 7 dias com boa qualidade
Tier 3 10.000 Enviar 1.000 conversas em 7 dias com boa qualidade
Tier 4 100.000 Enviar 10.000 conversas em 7 dias com boa qualidade
Ilimitado Sem limite Enviar 100.000 conversas em 7 dias com boa qualidade

8. Tratamento de Erros

A API utiliza codigos de status HTTP padrao para indicar sucesso ou falha. Respostas de erro incluem um corpo JSON com detalhes sobre o problema.

Codigos de status HTTP

Status Significado Descricao
200 OK Requisicao processada com sucesso
400 Bad Request Dados invalidos na requisicao
401 Unauthorized Token ausente ou invalido
403 Forbidden Sem permissao para esta acao
422 Unprocessable Entity Dados no formato correto mas semanticamente invalidos
429 Too Many Requests Rate limit excedido
500 Internal Server Error Erro interno do servidor

Formato da resposta de erro

{
  "success": false,
  "error": {
    "code": "INVALID_PHONE",
    "message": "Phone number format is invalid. Use international format: 5511999999999"
  }
}

Codigos de erro comuns

Codigo Descricao Solucao
INVALID_PHONE Numero de telefone invalido Use o formato internacional sem simbolos: 5511999999999
INVALID_TOKEN Token de autenticacao invalido Verifique se o token esta correto e nao expirou
TOKEN_EXPIRED Token expirado Gere um novo token no painel
TEMPLATE_NOT_FOUND Template nao encontrado Verifique o nome e idioma do template
TEMPLATE_NOT_APPROVED Template nao aprovado pela Meta Aguarde a aprovacao ou submeta novamente
MEDIA_URL_INVALID URL de midia inacessivel Verifique se a URL e publica e acessivel via HTTPS
MEDIA_TOO_LARGE Arquivo de midia excede o limite Reduza o tamanho do arquivo conforme limites da tabela
RATE_LIMIT_EXCEEDED Limite de requisicoes excedido Aguarde o tempo indicado no header Retry-After
RECIPIENT_NOT_WHATSAPP Destinatario nao usa WhatsApp Confirme que o numero esta registrado no WhatsApp
OUTSIDE_WINDOW Fora da janela de 24 horas Use um template aprovado para iniciar nova conversa
NUMBER_BLOCKED Numero bloqueado pela Meta Verifique a qualidade do numero no painel
INSUFFICIENT_BALANCE Saldo insuficiente Adicione creditos na sua conta Lidmo

9. Exemplos de Codigo

Exemplos praticos de integracao nas linguagens mais populares.

cURL

curl -X POST https://api.lidmo.com.br/whatsapp/send \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "5511999999999",
    "message": "Hello from Lidmo!"
  }'

PHP (Laravel)

use Illuminate\Support\Facades\Http;

$response = Http::withToken($token)
    ->post('https://api.lidmo.com.br/whatsapp/send', [
        'phone' => '5511999999999',
        'message' => 'Hello!',
    ]);

if ($response->successful()) {
    $messageId = $response->json('data.message_id');
    // Mensagem enviada com sucesso
} else {
    $error = $response->json('error');
    // Tratar erro: $error['code'], $error['message']
}

PHP (sem framework)

$ch = curl_init('https://api.lidmo.com.br/whatsapp/send');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'phone' => '5511999999999',
        'message' => 'Hello!',
    ]),
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = json_decode($response, true);

Node.js (fetch)

const response = await fetch('https://api.lidmo.com.br/whatsapp/send', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    phone: '5511999999999',
    message: 'Hello!',
  }),
});

const data = await response.json();

if (data.success) {
  console.log('Message sent:', data.data.message_id);
} else {
  console.error('Error:', data.error.code, data.error.message);
}

Node.js (axios)

const axios = require('axios');

try {
  const { data } = await axios.post('https://api.lidmo.com.br/whatsapp/send', {
    phone: '5511999999999',
    message: 'Hello!',
  }, {
    headers: { Authorization: `Bearer ${token}` },
  });

  console.log('Message sent:', data.data.message_id);
} catch (error) {
  console.error('Error:', error.response?.data?.error);
}

Python (requests)

import requests

response = requests.post(
    'https://api.lidmo.com.br/whatsapp/send',
    headers={'Authorization': f'Bearer {token}'},
    json={'phone': '5511999999999', 'message': 'Hello!'}
)

data = response.json()

if data.get('success'):
    print(f"Message sent: {data['data']['message_id']}")
else:
    print(f"Error: {data['error']['code']} - {data['error']['message']}")

Python (aiohttp -- async)

import aiohttp

async def send_whatsapp(token, phone, message):
    async with aiohttp.ClientSession() as session:
        async with session.post(
            'https://api.lidmo.com.br/whatsapp/send',
            headers={'Authorization': f'Bearer {token}'},
            json={'phone': phone, 'message': message}
        ) as response:
            return await response.json()

C# (.NET)

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", token);

var content = new StringContent(
    JsonSerializer.Serialize(new { phone = "5511999999999", message = "Hello!" }),
    Encoding.UTF8,
    "application/json"
);

var response = await client.PostAsync("https://api.lidmo.com.br/whatsapp/send", content);
var json = await response.Content.ReadAsStringAsync();

Exemplo de recebimento de webhook (PHP/Laravel)

// routes/api.php
Route::post('/webhook/whatsapp', [WebhookController::class, 'handle']);

// WebhookController.php
public function handle(Request $request)
{
    // Verificar assinatura
    $signature = $request->header('X-Lidmo-Signature');
    $expected = hash_hmac('sha256', $request->getContent(), config('services.lidmo.webhook_secret'));

    if (!hash_equals($expected, $signature)) {
        return response('Invalid signature', 403);
    }

    $event = $request->input('event');
    $data = $request->input('data');

    match ($event) {
        'message.received' => $this->handleIncomingMessage($data),
        'message.delivered' => $this->handleDelivered($data),
        'message.read' => $this->handleRead($data),
        'message.failed' => $this->handleFailed($data),
        default => null,
    };

    return response('OK', 200);
}

10. Multiplos Numeros

A Lidmo suporta a gestao de multiplos numeros WhatsApp Business em uma unica conta. Cada numero possui suas proprias configuracoes, templates e limites de envio.

Gerenciando numeros

  • Adicione novos numeros em WhatsApp API > Numeros no painel
  • Cada numero deve ser verificado independentemente pela Meta
  • Tokens de API podem ser associados a numeros especificos ou ter acesso a todos

Especificando o numero de envio

Quando voce tem mais de um numero, inclua o campo from para especificar de qual numero a mensagem deve ser enviada:

{
  "phone": "5511999999999",
  "from": "5511888888888",
  "message": "Mensagem enviada do numero secundario"
}

Se o campo from nao for informado, a API utiliza o numero padrao configurado no seu painel.

Qualidade do numero

A Meta atribui um rating de qualidade para cada numero. Monitorar essa metrica e fundamental para manter bons limites de envio:

  • Verde (Alto): Numero em boas condicoes, elegivel para aumento de tier
  • Amarelo (Medio): Qualidade em declinio, requer atencao
  • Vermelho (Baixo): Risco de reducao de tier ou bloqueio

Atencao: Se a qualidade do numero cair para vermelho por mais de 7 dias, a Meta pode reduzir o tier de envio ou bloquear o numero temporariamente. Monitore a qualidade regularmente pelo painel da Lidmo.

11. Logs e Analytics

O painel da Lidmo oferece logs detalhados e analytics completos para todas as mensagens enviadas e recebidas.

Logs de mensagens

  • Historico completo de todas as mensagens com status de entrega
  • Filtros por data, status (sent, delivered, read, failed), tipo de mensagem e numero
  • Detalhes de cada mensagem incluindo payload enviado e resposta da Meta
  • Exportacao de logs em CSV

Metricas disponiveis

  • Volume de mensagens: Total de mensagens enviadas e recebidas por periodo
  • Taxa de entrega: Percentual de mensagens entregues com sucesso
  • Taxa de leitura: Percentual de mensagens lidas pelo destinatario
  • Custo total: Gasto acumulado por numero e por periodo
  • Erros: Breakdown de erros por tipo e frequencia

Acompanhamento de custos

Acompanhe os custos por numero, por tipo de conversa e por periodo. O painel exibe:

  • Gasto diario, semanal e mensal
  • Custo por numero WhatsApp
  • Distribuicao de custos por categoria (Marketing, Utility, Authentication, Service)
  • Relatorios mensais exportaveis

12. Boas Praticas

Formatacao de mensagens

  • O WhatsApp suporta formatacao basica: *negrito*, _italico_, ~tachado~ e ```monospacado```
  • Use quebras de linha para organizar mensagens longas
  • Evite mensagens muito longas -- quebre em mensagens menores quando necessario

Evitando violacoes de politica da Meta

  • Sempre obtenha consentimento (opt-in) antes de enviar mensagens
  • Nao envie mensagens em massa nao solicitadas (spam)
  • Forneca uma opcao clara de cancelamento (opt-out) em toda mensagem de marketing
  • Nao use o WhatsApp para conteudo proibido (jogos de azar, conteudo adulto, venda de armas, etc.)
  • Respeite as restricoes de horario -- evite envios em horarios inconvenientes

Dicas para aprovacao de templates

  • Use linguagem clara e profissional
  • Evite linguagem excessivamente promocional no corpo do template
  • Inclua o nome da empresa no template
  • Forneca contexto claro de por que o usuario esta recebendo a mensagem
  • Nao inclua URLs encurtadas (use URLs completas)
  • Evite excesso de variaveis -- templates muito genericos tendem a ser rejeitados

Gestao de opt-in/opt-out

  • Registre e armazene o consentimento do usuario com data e hora
  • Implemente um mecanismo automatico para processar pedidos de opt-out (ex: responder "SAIR")
  • Mantenha uma lista atualizada de numeros que optaram por nao receber mensagens
  • A Meta pode solicitar comprovacao de opt-in em caso de denuncias

Dica: Numeros com baixo indice de bloqueio e denuncias sobem de tier mais rapidamente, permitindo enviar mais mensagens por dia. Investir em qualidade de conteudo e consentimento tem impacto direto na capacidade de envio.

13. FAQ / Troubleshooting

Problemas comuns

Mensagem nao esta sendo entregue

  • Verifique se o numero do destinatario esta no formato internacional correto (ex: 5511999999999)
  • Confirme que o destinatario tem o WhatsApp instalado e ativo
  • Se estiver fora da janela de 24h, use um template aprovado
  • Verifique os logs no painel para identificar o erro especifico

Erro 401 Unauthorized

  • Verifique se o token esta correto e nao expirou
  • Confirme que o header Authorization esta no formato Bearer {token}
  • Gere um novo token no painel se necessario

Template nao encontrado

  • Verifique se o nome do template esta exatamente igual ao cadastrado (case-sensitive)
  • Confirme que o idioma (template_language) esta correto
  • Verifique se o template foi aprovado pela Meta (templates pendentes ou rejeitados nao podem ser usados)

Numero bloqueado pela Meta

  • Bloqueios geralmente ocorrem por excesso de denuncias ou violacoes de politica
  • Verifique a qualidade do numero no painel (deve estar verde)
  • Reduza o volume de envio e melhore a qualidade das mensagens
  • Em casos graves, entre em contato com o suporte da Lidmo para intermediacao com a Meta

Webhook nao recebe eventos

  • Confirme que a URL do webhook e acessivel publicamente via HTTPS
  • Verifique se o desafio de verificacao (challenge) foi respondido corretamente
  • Confirme que seu servidor retorna status 200 dentro de 10 segundos
  • Verifique os logs de webhook no painel para ver tentativas de entrega

Mensagens com atraso na entrega

  • Atrasos de ate 30 segundos sao normais em periodos de alto volume
  • Verifique se o destinatario tem conexao com a internet
  • A Meta pode enfileirar mensagens quando o servidor do destinatario esta indisponivel
  • Para mensagens urgentes (OTP), use templates do tipo Authentication que tem prioridade de entrega

Verificacao da conta Meta Business

Para utilizar a API do WhatsApp Business, sua empresa precisa ser verificada pela Meta. O processo inclui:

  1. Criar ou acessar o Facebook Business Manager
  2. Enviar documentos de verificacao da empresa (CNPJ, contrato social, etc.)
  3. Aguardar a analise da Meta (geralmente 2-5 dias uteis)
  4. Apos aprovacao, vincular o numero de telefone ao WhatsApp Business

Precisa de ajuda? Entre em contato com nosso suporte em suporte@lidmo.com.br para assistencia com configuracao, verificacao Meta ou qualquer duvida tecnica.

Para a referencia completa de endpoints, consulte a secao API Reference.