Central de Ajuda + API

Documentação PliVant

Quer só configurar o painel? Comece pelo mapa simples abaixo. Quer integrar por código? Continue para os exemplos prontos de API, templates, webhooks, Agentes de IA e MCP.

1. Autenticação & Endpoints Base

Começando com a PliVant API

A PliVant API fornece uma camada REST simplificada, padronizada e de altíssimo desempenho para a Meta WhatsApp Business Cloud API. Todas as requisições autenticadas devem enviar o header Authorization: Bearer plv_live_.... A chave já nasce vinculada a um projeto: não envie X-Project-Id. Em todo envio, use também Idempotency-Key (UUID ou ID do pedido). Para conciliar com CRM, ERP ou automações, envie opcionalmente metadata (até 20 chaves) e tags (até 20). Esses campos voltam nos webhooks messages.status e não são enviados à Meta. A API devolve headers X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset.

// URL Base de Produção:
https://api.plivant.com.br/v1
Formato de Telefone (E.164)

O número deve conter DDI + DDD + Telefone, somente números (ex: 5511999998888).

Janela de Atendimento (24h)

Dentro de 24h da última mensagem do cliente, qualquer texto livre e mídia podem ser enviados. Fora da janela, utilize templates.

Qual tela do painel eu uso?

Se você não quer ler documentação técnica, use este mapa. Clique na tarefa que quer fazer e vá direto para a tela certa.

Conectar meu WhatsApp

Autorize a empresa e conecte o número oficial.

Faça: Conectar → login Meta → escolha empresa/WABA/número → confirme que ficou Conectado.

Organizar número por projeto

Defina qual número e quais chaves pertencem a cada projeto.

Faça: crie o projeto → vincule o número → depois gere as chaves que usarão esse projeto.

Criar uma chave de API

Gere a chave que n8n, Make, ERP ou seu sistema vai usar.

Faça: escolha projeto, scopes e números → gerar → copie a chave e guarde no sistema que vai integrar.

Criar e gerenciar template

Crie, edite, sincronize, teste e exclua sem sair do Studio.

Novo: escolha WABA → monte → enviar → sincronizar. Existente: Abrir no Studio → editar → enviar atualização → sincronizar. Para remover: Excluir Meta.

Criar atendente de IA

Configure o atendimento automático sem precisar de n8n.

Faça: escolha o modelo do seu negócio → Cérebro → Conhecimento → Ferramentas → Rotinas → Regras → Testar → Ativar no número.

Atender conversas / assumir a IA

Abra o Inbox nativo para ver contatos, mídia, não lidas e responder como humano.

Faça: Conversas → escolha o contato → Assumir atendimento → responda por texto/áudio/arquivo → Devolver para IA quando quiser.

Conectar Chatwoot

Leve as conversas para uma central de atendimento humano.

Faça: selecione o número → informe os dados pedidos pelo assistente → salve → use o teste da própria tela.

Conectar agente externo via MCP

Autorize Codex, Claude, Cursor e outros clientes MCP.

Faça: copie o endpoint → autorize projeto, números e scopes → conecte no cliente MCP → revise autorizações quando quiser.

Usar n8n / Make / Typebot

Use automação externa quando a lógica precisa ficar fora da PliVant.

Faça: escolha API/Automações → copie o exemplo ou workflow → coloque sua chave → conecte o webhook se precisar receber eventos.

Receber eventos no meu sistema

Cadastre destinos, eventos e assinatura HMAC.

Faça: adicionar webhook → URL → escolher eventos → salvar → copie o segredo HMAC e valide no seu backend.

Testar um envio real

Faça um envio guiado antes de automatizar.

Faça: selecione o número → informe o destinatário → escolha o tipo → enviar → confirme o status nos Logs.

Ver erros e status

Consulte entrega, leitura, falhas e detalhes das mensagens.

Faça: filtre por número/status → abra a mensagem → veja erro Meta, timestamps e tentativas antes de alterar a automação.

Assinatura e números

Veja plano, capacidade, renovação e pagamentos.

Faça: confira números ativos e vencimento → renove ou adicione instâncias sem alterar os dias das atuais.

POST/v1/messages
2. Envio de mensagem de texto

Envia uma mensagem de texto simples para um número de WhatsApp dentro da janela de 24 horas ou como resposta ativa.

curl -X POST https://api.plivant.com.br/v1/messages \
  -H "Authorization: Bearer plv_live_sua_chave_aqui" \
  -H "Idempotency-Key: pedido-123" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "5511999998888",
    "type": "text",
    "text": "Pedido confirmado.",
    "metadata": { "order_id": "ord_123", "customer_id": "crm_42" },
    "tags": ["ecommerce", "checkout"]
  }'
Parâmetros do Payload:
CampoTipoObrigatórioDescrição
recipientstringSimNúmero do destinatário com DDI + DDD (ex: 5511999998888).
typestringSimDeve ser exatamente "text".
textstringSimConteúdo textual da mensagem (suporta emojis e até 4.096 caracteres).
phoneNumberIdstring (UUID)OpcionalID do número específico. Obrigatório apenas se houver múltiplos números no mesmo projeto.
Resposta HTTP 202 Accepted
{
  "id": "c3f1a8e2-7b14-4d90-9c2a-1f6e8b0d4a21",
  "status": "queued",
  "recipient": "5511999998888",
  "type": "text",
  "metadata": {
    "order_id": "ord_123",
    "customer_id": "crm_42"
  },
  "tags": [
    "ecommerce",
    "checkout"
  ],
  "created_at": "2026-09-20T01:30:00.000Z"
}
GET/v1/messages/:id
Consultar status

O POST responde 202 com status: "queued" assim que a mensagem entra na fila. Use este GET (escopo messages:read) ou o webhook messages.status para sent, delivered, read ou failed.

curl https://api.plivant.com.br/v1/messages/<MESSAGE_ID> \
  -H "Authorization: Bearer plv_live_SUA_CHAVE"
POST/v1/messages
3. Envio de mídia

Envie arquivos diretamente via URL pública HTTPS acessível pela Cloud API da Meta. O sistema realiza o download seguro e o repasse transparente para o cliente.

curl -X POST https://api.plivant.com.br/v1/messages \
  -H "Authorization: Bearer plv_live_sua_chave_aqui" \
  -H "Idempotency-Key: pedido-123" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "5511999998888",
    "type": "image",
    "mediaUrl": "https://meusite.com.br/uploads/recibo-pix.png",
    "caption": "Segue o comprovante oficial de pagamento da sua fatura."
  }'
Imagens

JPG, PNG, WebP

Máx. 16 MB

Documentos

PDF, DOCX, XLSX

Máx. 100 MB

Áudios

OGG (Opus), MP3

Máx. 16 MB

Vídeos

MP4 (H.264 + AAC)

Máx. 16 MB

POST/v1/messages
4. Templates aprovados pela Meta

Templates são obrigatórios para iniciar conversas ativas com clientes fora da janela de 24 horas (notificações de envio, alertas de segurança, cobranças Pix e recuperação de carrinho).

curl -X POST https://api.plivant.com.br/v1/messages \
  -H "Authorization: Bearer plv_live_sua_chave_aqui" \
  -H "Idempotency-Key: pedido-123" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "5511999998888",
    "type": "template",
    "templateName": "notificacao_pedido_v1",
    "languageCode": "pt_BR",
    "components": [
      {
        "type": "body",
        "parameters": [
          { "type": "text", "text": "Carlos Alves" },
          { "type": "text", "text": "#4821" }
        ]
      }
    ]
  }'
POST/v1/messages
5. Botões e listas interativas

Aumente as taxas de conversão e simplifique o fluxo de atendimento com botões clicáveis (Quick Reply) e listas suspensas (List Messages).

curl -X POST https://api.plivant.com.br/v1/messages \
  -H "Authorization: Bearer plv_live_sua_chave_aqui" \
  -H "Idempotency-Key: pedido-123" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "5511999998888",
    "type": "interactive_buttons",
    "bodyText": "Deseja confirmar o agendamento da sua consulta para amanhã às 14h?",
    "headerText": "Confirmação de Consulta",
    "footerText": "Responda clicando em um dos botões abaixo",
    "buttons": [
      { "id": "btn_sim", "title": "Confirmar Sim" },
      { "id": "btn_nao", "title": "Reagendar" },
      { "id": "btn_falar", "title": "Falar com Humano" }
    ]
  }'

6. Catálogo, Contato & Templates Avançados

A Send API também aceita mensagens comerciais de catálogo e solicitação de contato. No Template Studio, você cria de forma guiada Carousel de mídia ou produtos, SPM/MPM, cupom Copy Code, oferta por tempo limitado, Authentication Template com OTP/COPY_CODE e o botão oficial REQUEST_CONTACT_INFO.

Produto únicointeractive_product

Envia um produto do catálogo usando catalogId + productRetailerId.

Lista de produtosinteractive_product_list

Organiza produtos em seções e aceita até 30 itens no total.

Abrir catálogointeractive_catalog

Envia um catalog_message para o cliente navegar pelo catálogo no WhatsApp.

Solicitar contatorequest_contact

Solicita o compartilhamento do telefone e aceita destinatário E.164 ou BSUID.

Leitura + digitando…read_receipt

Marca uma mensagem inbound como lida e pode iniciar o typing indicator oficial da Meta com showTypingIndicator.

Exemplo — produto único
curl -X POST https://api.plivant.com.br/v1/messages \
  -H "Authorization: Bearer plv_live_sua_chave_aqui" \
  -H "Idempotency-Key: produto-42" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "5511999998888",
    "type": "interactive_product",
    "catalogId": "catalog_123",
    "productRetailerId": "sku_42",
    "bodyText": "Confira este produto"
  }'
Exemplo — solicitar contato
curl -X POST https://api.plivant.com.br/v1/messages \
  -H "Authorization: Bearer plv_live_sua_chave_aqui" \
  -H "Idempotency-Key: contato-lead-55" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "BR.2178496185888133",
    "type": "request_contact",
    "bodyText": "Compartilhe seu telefone para continuar."
  }'
Exemplo — marcar como lida + indicador digitando
curl -X POST https://api.plivant.com.br/v1/messages \
  -H "Authorization: Bearer plv_live_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "read_receipt",
    "messageId": "wamid.HBg...",
    "showTypingIndicator": true
  }'
Template Studio avançado

Carousel: 2–10 cards. Pode ser mídia IMAGE/VIDEO com URL/Quick Reply ou produto do catálogo com PRODUCT + SPM.

Authentication: estrutura OTP/COPY_CODE com recomendação de segurança e expiração configurável.

Request contact: botão oficial sem texto customizado, disponível em templates Utility/Marketing.

Oferta limitada: Marketing com Copy Code, CTA URL e countdown definido no momento do envio.

7. Sandbox, Meta-compatible, SDKs & Chatwoot

Recursos avançados para desenvolvimento e migração. Todos continuam passando pela autenticação, isolamento de projeto, scopes, rate limit, logs e auditoria da PliVant.

Sandbox sem número real

Projetos com environment=sandbox recebem chaveplv_test_... e não chamam a Meta. Envios simulamsent → delivered → read e usam os webhooks/HMAC reais.

POST /v1/sandbox/messages/inbound

Simula uma mensagem recebida e dispara messages.received.

Meta-compatible mode

Para migração de Cloud API direta/BSP, envie o JSON nativo da Meta sem adaptar para o wrapper normalizado. O access token e o phone number da Meta nunca são aceitos do cliente.

POST /v1/meta/messages

Scope obrigatório: meta:raw. Se houver mais de um número, use X-PliVant-Phone-Number-Id com o UUID interno.

SDKs sincronizados pelo OpenAPI

Clientes Node/TypeScript, Python e PHP são versionados junto do contrato OpenAPI exportado pela própria API. O comando npm run sdk:contract regenera o snapshot e os paths consumidos pelos três SDKs.

Incluem mensagens, Sandbox e Meta-compatible. A publicação em registries públicos é separada do código local.

Chatwoot nativo

Pelo Dashboard, conecte URL do Chatwoot, Account ID, número oficial e Personal Access Token. A PliVant cria a API Inbox, registra o webhook assinado e faz a ponte de mensagens nos dois sentidos. O token fica criptografado e o Chatwoot continua sendo a interface de atendimento — a PliVant não vira CRM.

Custos: a PliVant não cobra por atendente. O Chatwoot Cloud possui planos com cobrança por agente, contratados separadamente. Na Community Edition auto-hospedada, não há licença por agente, mas servidor, manutenção e eventuais recursos pagos ficam por sua conta. A assinatura PliVant não inclui esses custos nem as tarifas de uso da Meta. Recursos variam conforme a edição e o plano.

Consulte os planos do Chatwoot Cloud e as edições auto-hospedadas.

Dashboard → Integrações → Chatwoot

Configuração, teste de conexão e desconexão ficam no painel. Mensagens recebidas criam/atualizam contato e conversa; respostas do Chatwoot voltam pela API oficial da PliVant.

8. Recebimento de Mensagens & Webhooks Assinados (HMAC)

A PliVant despacha requisições HTTP POST em tempo real para o seu servidor. Cada requisição acompanha o header criptográfico X-PliVant-Signature: t=<timestamp>,v1=<hmac> para validação inviolável de autenticidade.

messages.received

O cliente enviou texto, áudio, foto, documento ou resposta a um botão.

messages.status

Confirmação de envio: sent, delivered, read ou failed.

coexistence.history / contacts

Histórico e contatos compartilhados pela Coexistência são repassados ao seu sistema sem virar CRM ou mensagem inbound.

templates.status

Aprovação ou rejeição de templates submetidos para revisão da Meta.

meta.raw · opcional

Entrega o fragmento original do evento Meta dentro do envelope PliVant. Precisa ser selecionado explicitamente no endpoint; não entra nos eventos padrão.

Como verificar a assinatura HMAC no seu backend:
import crypto from 'crypto';

// Express.js middleware para validar o header X-PliVant-Signature
export function verifyPliVantSignature(req, res, next) {
  const header = req.headers['x-plivant-signature'];
  const secret = process.env.PLIVANT_WEBHOOK_SECRET;

  if (!header || !secret) {
    return res.status(401).json({ error: 'Assinatura ausente ou webhook secret não configurado.' });
  }

  const parts = Object.fromEntries(header.split(',').map(p => p.split('=')));
  const timestamp = parts['t'];
  const receivedHmac = parts['v1'];

  // Tolerância de tolerância a replay attack (5 minutos)
  const toleranceSeconds = 300;
  const now = Math.floor(Date.now() / 1000);
  if (Math.abs(now - parseInt(timestamp, 10)) > toleranceSeconds) {
    return res.status(401).json({ error: 'Timestamp expirado (replay attack detectado).' });
  }

  const payloadToSign = `${timestamp}.${req.rawBody || JSON.stringify(req.body)}`;
  const expectedHmac = crypto.createHmac('sha256', secret).update(payloadToSign).digest('hex');

  const isValid = crypto.timingSafeEqual(Buffer.from(receivedHmac, 'hex'), Buffer.from(expectedHmac, 'hex'));
  if (!isValid) {
    return res.status(403).json({ error: 'Assinatura HMAC inválida.' });
  }

  next();
}

Templates — criar, editar e operar sem sair do painel

Template é a mensagem aprovada pela Meta que você pode usar para iniciar ou retomar uma conversa. A PliVant centraliza criação, aprovação, sincronização, teste e exemplos de integração.

1
Abra Templates

Escolha a WABA/número e clique para criar um modelo ou usar um modelo pronto.

2
Monte e envie para aprovação

Preencha corpo, variáveis, mídia e botões. O painel valida as regras antes de enviar à Meta.

3
Espere ficar APPROVED

Use Sincronizar para trazer o status real. Templates pendentes ou rejeitados não podem ser enviados.

4
Envie de onde quiser

Use o botão de teste, REST API, MCP, n8n/Make/Typebot ou automações do seu sistema.

O que o Studio cobre hoje
O uso comum fica guiado; formatos muito específicos continuam disponíveis pela API.
Guiado no painel

Texto, imagem, vídeo, PDF, localização, Quick Reply, URL, telefone, solicitar contato, catálogo, cupom Copy Code, produto único (SPM), multi-produto (MPM), Carousel de mídia, Carousel de produtos, oferta por tempo limitado (LTO) e autenticação OTP por copiar código ou one-tap.

Avançado / API

No envio de SPM/MPM/Carousel de produtos você informa catálogo e SKUs; no LTO informa a data/hora final. Formatos de nicho ou liberados seletivamente pela Meta continuam acessíveis pelo modo Meta-compatible sem bloquear integrações externas.

Abrir Templates no painel

Agente de IA — atendimento 24/7 sem n8n

Use este caminho quando você quer que o próprio número oficial responda clientes automaticamente. O computador pode ficar desligado: a fila da PliVant executa o agente no servidor.

1. Modelo do negócio

Escolha clínica, loja, serviços, imobiliária, restaurante, suporte, escola/curso ou outro negócio. A PliVant prepara uma base segura de comportamento e um checklist recomendado.

2. Cérebro

Conecte OpenRouter, OpenAI, Claude, Gemini ou xAI e escolha o modelo.

3. Conhecimento

Adicione texto, XLSX/CSV/JSON, PDF, DOCX, PPTX/PPSX, TXT/MD, site ou Google Sheets. É daí que saem preços, políticas e dados de consulta.

4. Ferramentas

Use integrações prontas ou ações de preço, estoque, pedido, agenda, rastreio, cobrança e qualquer API. Templates APPROVED do mesmo número entram automaticamente.

5. Rotinas

Monte processos confiáveis com sequência, SE/SENÃO, espera, retry, lotes, aprovação humana, webhook, evento e agendamento.

6. Regras

Defina memória, horário, handoff humano, retorno automático da IA após inatividade e limites de execução.

7. Testar

Converse com o agente no simulador e teste Rotinas em dry-run antes de publicar. Escritas reais ficam protegidas.

8. Ativar

Ative um agente por número. A partir daí cada mensagem recebida entra no fluxo automático.

Como o agente escolhe a resposta
Você não precisa montar um workflow para cada formato.
Resposta normal → texto

Dúvidas, preços e explicações saem como texto quando essa é a melhor resposta.

Até 3 escolhas → botões

Ex.: Comercial, Suporte ou Financeiro. O clique volta para o mesmo agente continuar.

Muitas escolhas → lista

O agente envia a lista nativa do WhatsApp em vez de uma parede de opções numeradas.

Precisa de pessoa → handoff

A própria IA pode chamar a ferramenta de transferência quando o cliente pedir humano ou quando a regra do atendimento exigir escalonamento.

Template necessário → APPROVED

Ele vê os templates aprovados da mesma WABA, preenche os campos e envia sem resposta duplicada.

Venda → produto ou catálogo

Com IDs/SKUs vindos de conhecimento ou API confiável, ele pode enviar produto, lista de produtos ou abrir o catálogo nativo.

Conteúdo útil → mídia

Quando tiver uma URL pública confiável, pode enviar imagem, documento, áudio, vídeo ou sticker pela mesma Send API.

Dados do atendimento → localização/contato

Pode mandar localização conhecida, cartão de contato ou pedir ao cliente que compartilhe o próprio contato.

Configurar Agente de IA

PliVant MCP — dê ferramentas da sua conta a um agente externo

MCP é para quando você quer usar Codex, Claude, Cursor ou outro cliente compatível para operar a PliVant. Para atendimento automático do WhatsApp sem aplicativo aberto, prefira o Agente de IA nativo.

Endpoint MCP
https://api.plivant.com.br/mcp
O que ele pode fazer

Com messages:send, o agente externo pode enviar texto, template, mídia, botões, listas, produtos, catálogo, localização, contatos, reação e leitura/typing. Com os scopes de templates ele também lista, cria rascunho, submete, sincroniza e exclui templates autorizados. O modo meta:raw fica separado para payloads Meta-compatible avançados.

Como a segurança funciona

OAuth ou Bearer define projeto, números e scopes. O cliente só enxerga as ferramentas que aquela autorização permite.

Abrir PliVant MCP

Integrações externas — qual caminho usar?

n8n / Make / Typebot

Use a REST API para enviar e Webhooks para receber. É o caminho certo quando a lógica fica fora da PliVant.

Chatwoot

Use a página própria do Chatwoot para central de atendimento humano. A integração não precisa passar pelo n8n.

Seu ERP / CRM

No Agente de IA, cadastre a API em Ferramentas. Fora do agente, use REST + Webhook normalmente.

MCP

Use quando outro agente de IA precisa descobrir e executar ferramentas da PliVant com permissões controladas.

Abrir Integrações

13. Status HTTP & Tratamento de Erros da API

A PliVant utiliza códigos HTTP padronizados e códigos de erro específicos da Meta Graph API para que sua aplicação trate contingências de forma determinística.

Códigos de Status HTTP:
CódigoStatusSignificado e Ação Recomendada
200 / 202OK / AcceptedMensagem enfileirada no BullMQ e processada com sucesso.
400Bad RequestPayload malformado, número fora do padrão E.164 ou número não autorizado para este projeto.
401UnauthorizedChave de API ausente, incorreta ou revogada no painel.
403ForbiddenOrganização sem assinatura ativa ou suspensa por estorno/chargeback.
409ConflictIdempotency-Key reutilizada com payload diferente. Use a mesma chave só para o mesmo envio.
429Too Many RequestsLimite de taxa por minuto atingido. Respeite o header Retry-After.
500 / 503Server ErrorIndisponibilidade momentânea no upstream Meta. O worker reprocessará automaticamente.
Erros Comuns da Meta Cloud API:
Código MetaMotivoComo resolver
131047Janela de 24 horas expiradaO cliente não enviou mensagem nas últimas 24h. Envie um Template Aprovado em vez de texto livre.
131026Número inexistenteO telefone destinatário não possui conta no WhatsApp. Valide o número antes de enviar.
131053Mídia inacessívelA URL do arquivo retornou 404, exigiu login ou bloqueou o IP dos servidores da Meta. Use URLs públicas HTTPS.
130429Meta Rate LimitVolume por segundo excedeu a faixa da conta de WhatsApp Business na Meta. Espalhe os disparos.
Payload Exemplo de Erro:
{
  "statusCode": 403,
  "error": "Forbidden",
  "message": "Acesso bloqueado: a organização não possui uma assinatura ativa (Status atual: sem assinatura). Acesse o painel para regularizar."
}