Introdução
Esta seção fornece a documentação oficial para uso da API da Lovi com WhatsApp via Postman. Inclui instruções detalhadas sobre como configurar e testar requisições de API para integração com WhatsApp, garantindo comunicação fluida através da plataforma. A autenticação é realizada usando tokens que habilitam autenticação básica para os serviços da API. Para mais detalhes sobre como se autenticar, consulte a página de Autenticação. A API da Lovi suporta notificações WhatsApp com conteúdo multimídia, placeholders dinâmicos, entrega agendada e integração com fluxos de conversa.Recursos Principais:
- Notificações WhatsApp com suporte a multimídia
- Personalização de conteúdo dinâmico com placeholders
- Entrega de mensagens agendadas com suporte a fuso horário
- Integração com fluxos de conversa
- Dois formatos de estrutura de dados (aninhado e plano)
📣 Enviar Notificação WhatsApp
Para enviar uma notificação via API da Lovi, faça uma requisição POST ao endpoint com os parâmetros necessários e autenticação.Método: POST Formato: JSON
Endpoint
Parâmetros de Query
URLs de Exemplo:
Headers
Nota: A autenticação é feita via parâmetro
access_key na URL, não através de headers.
📋 Parâmetros da Requisição
A API suporta dois formatos de estrutura de dados controlados pelo parâmetrounflatten.
Parâmetros Obrigatórios
Importante: Você deve usar
contact (para destinatário único) OU contacts (para múltiplos destinatários), mas NÃO ambos.
Parâmetros Opcionais
👥 Destinatário Único vs Múltiplos
Usando contact - Enviar para Uma Pessoa
Use contact quando quiser enviar uma notificação para um destinatário.
Estrutura:
contacté um objeto (não uma lista)- Campo obrigatório:
number - Campos opcionais:
name,emaile quaisquer campos personalizados
Usando contacts - Enviar para Múltiplas Pessoas (Envio em Massa)
Use contacts quando quiser enviar a mesma notificação para múltiplos destinatários de uma vez.
Estrutura:
contactsé uma lista/array (não um objeto único)- Máximo: 100 contatos por requisição
- Cada contato na lista deve ter um
number - Campos opcionais:
name,emaile quaisquer campos personalizados
- ⚠️ Não é possível usar
unflatten=truecomcontacts- Envio em massa só funciona com estrutura aninhada - ⚠️ Não é possível usar
contactecontactsna mesma requisição - escolha um - ⚠️ A lista
contactsnão pode estar vazia - deve ter pelo menos 1 contato
🔄 Formatos de Estrutura de Dados
A API suporta dois formatos baseados no parâmetrounflatten:
Estrutura Aninhada (unflatten=false ou omitido)
Quandounflatten=false ou não especificado, use objetos aninhados:
Estrutura Plana (unflatten=true)
Quandounflatten=true, todos os objetos aninhados devem ser achatados usando notação de ponto:
Quando Usar Cada Formato
- Estrutura Aninhada (
unflatten=false): Recomendada para melhor legibilidade e quando seu sistema suporta objetos aninhados - Estrutura Plana (
unflatten=true): Use quando seu sistema não suporta objetos aninhados ou requer estrutura de dados plana
🎨 Componentes e Multimídia
IMPORTANTE: Componentes que você pode enviar dinamicamente são APENAS aqueles retornados pelo endpoint de componentes do template. A estrutura varia dependendo se o template tem variáveis ou mídia.Regras de Nomenclatura de Componentes
- Header de mídia:
header_image,header_video,header_document(SEM número de sufixo) - Variáveis do body:
body_text_0,body_text_1,body_text_2, etc. (com número de índice para cada placeholder{"{1}"},{"{2}"},{"{3}"}) - Footer e Botões: São ESTÁTICOS na definição do template e NÃO PODEM ser enviados dinamicamente
Como Saber Quais Componentes Enviar
-
Primeiro, chame o endpoint de componentes do template:
-
A API retorna apenas os componentes que você precisa fornecer:
- Envie APENAS esses componentes na sua requisição de notificação
Tipos de Componentes por Posição
Componentes de Header (Apenas Mídia)
IMPORTANTE: Apenas UM componente de header por template. O texto do header é ESTÁTICO no template.
Nota:
header_text NÃO é um componente dinâmico. O texto do header é definido no template e não pode ser alterado.
Componentes do Body (Apenas Variáveis)
Texto do body com placeholders requer variáveis em ordem:{"{1}"}, {"{2}"}, {"{3}"}, etc.
Template de Exemplo: “Olá
{"{1}"}, seu curso {"{2}"} está pronto”
body_text_0: Valor para{"{1}"}(ex.: “Maria”)body_text_1: Valor para{"{2}"}(ex.: “JavaScript”)
Componentes do Footer
⚠️ Footer é ESTÁTICO - definido no template e não pode ser modificado por mensagem.Componentes de Botões
IMPORTANTE: A maioria dos botões são ESTÁTICOS no template. No entanto, botões de URL com variáveis PODEM ser dinâmicos.
Nota: Botões de resposta rápida são sempre estáticos e não podem ser modificados por mensagem.
🧩 Variáveis do Template (Body Text)
CRÍTICO: Variáveis em templates do WhatsApp usam placeholders posicionais como{"{1}"}, {"{2}"}, {"{3}"}, NÃO variáveis nomeadas como {"{name}"}.
Como as Variáveis do Template Funcionam
Templates do WhatsApp definem variáveis como placeholders numerados no texto do body do template:- Texto do template: “Olá
{"{1}"}, seu curso{"{2}"}está pronto” {"{1}"}mapeia parabody_text_0{"{2}"}mapeia parabody_text_1
Atribuição de Variáveis
Você fornece os valores para esses placeholders numerados no objetocomponents_push:
Regras Importantes
- A ordem posicional importa:
body_text_0={"{1}"},body_text_1={"{2}"}, etc. - Valores diretos: Forneça o valor real, não a sintaxe
{"{variable}"} - Todas as variáveis obrigatórias: Deve fornecer valores para todos os placeholders
{"{N}"}no template - Sem mistura: Não é possível combinar variáveis com texto estático em components_push
Resolução de Variáveis
O sistema resolve referências{"{variable}"} em components_push buscando:
- Primeiro no objeto
contact - Depois nos parâmetros de nível raiz
⏰ Agendamento e Fluxos de Conversa
Entrega Imediata (Padrão)
Sedatetime_sending não for especificado, a mensagem é enviada imediatamente.
Entrega Agendada
Usedatetime_sending e timezone para agendar mensagens.
Integração com Fluxo de Conversa
Usename_event para disparar fluxos de conversa específicos.
📊 Códigos de Resposta
Resposta de Sucesso (200 OK)
Envio imediato:Respostas de Erro
400 Bad Request - Parâmetros Inválidos
401 Unauthorized - Chave de Acesso Inválida
404 Not Found - Template Não Encontrado
422 Unprocessable Entity - Erro de Lógica de Negócio
429 Too Many Requests - Limite de Taxa
🔧 Boas Práticas
Estrutura de Dados
- Prefira estrutura aninhada (
unflatten=false) para melhor legibilidade - Use estrutura plana (
unflatten=true) apenas quando seu sistema exigir - Valide a estrutura antes de enviar requisições
Diretrizes de Mídia
- Use URLs HTTPS para todos os arquivos de mídia
- Otimize tamanhos de arquivo para entrega mais rápida
- Use URLs públicas sem requisitos de autenticação
- Teste URLs de mídia antes de enviar para garantir acessibilidade
Agendamento
- Especifique fuso horário ao usar
datetime_sending - Valide datas futuras antes de agendar
- Considere horário comercial para melhor engajamento
- Teste agendamento em ambiente de desenvolvimento
Desempenho
- Agrupe múltiplas notificações quando possível
- Cache informações de templates para reduzir chamadas de API
- Monitore limites de taxa e implemente estratégias de backoff
- Use connection pooling para melhor desempenho
📚 Documentação Relacionada
- Autenticação - Como obter tokens de acesso e chaves de API
- Notificações de Voz - Enviar chamadas de voz automatizadas
- Gerenciamento de Templates - Criar e gerenciar templates do WhatsApp
- Agendamento - Agendamento avançado e gerenciamento de fuso horário
- Tratamento de Erros - Códigos de erro completos e estratégias de tratamento
- Boas Práticas - Diretrizes de segurança e desempenho
