ZAP-API
PreçosCasos de UsoBlogDocsLogin
Começar grátis
  1. Blog
  2. WhatsApp API para seguradoras: abertura e acompanhamento de sinistro
Vertical

WhatsApp API para seguradoras: abertura e acompanhamento de sinistro

Como seguradoras usam WhatsApp API para abertura de sinistro, coleta de fotos, acompanhamento de status e agendamento de vistoria sem precisar de app.

22 de maio de 2026·11 min de leitura·Equipe Editorial ZAP API

O momento em que o cliente abre um sinistro é o teste de fogo da relação com a seguradora. Ele acabou de bater o carro, teve a casa furtada ou caiu da escada e ouviu "passa em alguma agência" ou "preenche este formulário web de 27 campos". Pesquisa interna de uma seguradora top 5 mostra: 41% dos sinistros iniciados em formulário web são abandonados antes da finalização. O mesmo cliente, atendido via WhatsApp, finaliza em 88% dos casos — porque o canal já está aberto, ele tira foto direto da câmera, e a comunicação flui em mensagens curtas em vez de um questionário interminável.

Este guia mostra como uma seguradora estrutura o ciclo completo de sinistro via WhatsApp API: abertura guiada, coleta de fotos, geração de protocolo, acompanhamento de status, agendamento de vistoria e fechamento — tudo sem o segurado precisar baixar app ou ligar pra central.

Por que sinistro via WhatsApp tem 70% menos abandono

Três barreiras quebram o funil tradicional:

  • Burocracia inicial: formulário web pede CPF, número da apólice, placa, modelo, ano, cor — antes de o cliente entender o que está sendo pedido. No WhatsApp, o bot puxa esses dados do CPF e só pergunta o que faltou.
  • Upload de fotos: em web, cliente tira foto no celular, transfere pro PC, faz upload em conexão WiFi. No WhatsApp, ele aponta a câmera e manda. Tempo médio: 7 minutos vs 45 segundos.
  • Acompanhamento: em web, cliente esquece a senha do portal e liga pra central. No WhatsApp, o status chega como notificação push — abertura sem custo de retenção.

Resultado direto no NPS: seguradoras que migraram abertura de sinistro pra WhatsApp viram NPS subir 22 pontos em 6 meses, segundo benchmarks de mercado de 2025.

Arquitetura do bot de sinistro

O fluxo é uma máquina de estados orientada a coleta progressiva. Cada estado representa um pedaço da informação necessária, e o bot avança apenas quando a peça anterior está validada.

Estados do sinistro

  • INICIO — cliente mandou "abrir sinistro", bot pede CPF
  • VALIDANDO_APOLICE — bot consulta sistema legado, valida apólice ativa
  • COLETA_TIPO — bot pergunta tipo (auto, residencial, vida) via buttons
  • COLETA_DADOS — perguntas específicas por tipo (data, hora, local)
  • COLETA_LOCATION — bot pede localização do evento (type:location)
  • COLETA_FOTOS — cliente envia 3-8 fotos (type:image), bot valida quantidade
  • COLETA_RELATO — descrição livre do ocorrido
  • GERANDO_PROTOCOLO — bot cria protocolo no sistema, retorna número
  • AGENDANDO_VISTORIA — para sinistros que exigem perícia
  • AGUARDANDO_ANALISE — bot envia atualizações conforme analista avança
  • FINALIZADO — pagamento ou negativa comunicada

Persistência da sessão

// Chave: sinistro:{telefone}
// TTL longo (72h) — sinistro pode ser pausado e retomado
import Redis from "ioredis";
const redis = new Redis(process.env.REDIS_URL);

async function getSinistro(phone) {
  const raw = await redis.get(`sinistro:${phone}`);
  return raw ? JSON.parse(raw) : { state: "INICIO", fotos: [], dados: {} };
}

async function saveSinistro(phone, sinistro) {
  await redis.set(`sinistro:${phone}`, JSON.stringify(sinistro), "EX", 60 * 60 * 72);
}

Webhook recebendo mensagens do segurado

import express from "express";
import axios from "axios";

const ZAP = axios.create({
  baseURL: "https://api.zap-api.tech/v1",
  headers: { Authorization: `Bearer ${process.env.ZAP_TOKEN}` },
});

const app = express();
app.use(express.json());

app.post("/webhook/zap", async (req, res) => {
  res.status(200).send("ok"); // ack imediato

  const { type, instanceId, message } = req.body;
  if (type !== "message.received") return;

  const phone = message.from;
  const sinistro = await getSinistro(phone);

  switch (sinistro.state) {
    case "INICIO":
      await ZAP.post(`/instances/${instanceId}/messages`, {
        to: phone,
        type: "text",
        text: { body: "Olá! Para abrir um sinistro preciso confirmar seu CPF. Pode digitar (apenas números)?" },
      });
      sinistro.state = "VALIDANDO_APOLICE";
      break;

    case "VALIDANDO_APOLICE":
      const cpf = (message.body?.text || "").replace(/\D/g, "");
      const apolice = await consultarApolice(cpf);
      if (!apolice) {
        await replyText(instanceId, phone, "Não encontrei apólice ativa para esse CPF. Quer falar com um atendente?");
        return;
      }
      sinistro.dados.cpf = cpf;
      sinistro.dados.apoliceId = apolice.id;
      await ZAP.post(`/instances/${instanceId}/messages`, {
        to: phone,
        type: "buttons",
        buttons: {
          text: `Olá ${apolice.nome}! Que tipo de sinistro é?`,
          buttons: [
            { id: "auto", text: "Automóvel" },
            { id: "casa", text: "Residencial" },
            { id: "vida", text: "Vida/Saúde" },
          ],
        },
      });
      sinistro.state = "COLETA_TIPO";
      break;

    case "COLETA_FOTOS":
      if (message.body?.type === "image") {
        sinistro.fotos.push({ messageId: message.id, mediaUrl: message.body.url });
        if (sinistro.fotos.length >= 3) {
          await replyText(instanceId, phone, `Recebi ${sinistro.fotos.length} fotos. Pode me contar com suas palavras o que aconteceu?`);
          sinistro.state = "COLETA_RELATO";
        } else {
          await replyText(instanceId, phone, `Recebi a foto ${sinistro.fotos.length}. Mande pelo menos 3 imagens diferentes (ex: visão geral, detalhe do dano, placa).`);
        }
      } else {
        await replyText(instanceId, phone, "Por favor, envie a foto direto pela câmera ou galeria.");
      }
      break;
  }

  await saveSinistro(phone, sinistro);
});

async function replyText(instanceId, phone, body) {
  await ZAP.post(`/instances/${instanceId}/messages`, {
    to: phone, type: "text", text: { body },
  });
}

Coleta de localização do acidente

Para sinistro automotivo, a localização exata economiza horas de perícia depois. O WhatsApp tem mensagem nativa de localização — basta pedir.

// Em estado COLETA_LOCATION
await ZAP.post(`/instances/${instanceId}/messages`, {
  to: phone,
  type: "text",
  text: {
    body: "Agora preciso da localização do acidente. No WhatsApp clique no clipe (📎), depois Localização e escolha 'Localização atual' ou aponte no mapa onde foi.",
  },
});
sinistro.state = "AGUARDANDO_LOCATION";

// No webhook, quando recebe message.body.type === "location":
case "AGUARDANDO_LOCATION":
  if (message.body?.type === "location") {
    sinistro.dados.local = {
      lat: message.body.latitude,
      lng: message.body.longitude,
      address: message.body.address,
    };
    await replyText(instanceId, phone, `Localização registrada. Agora preciso de fotos do veículo e do local.`);
    sinistro.state = "COLETA_FOTOS";
  }
  break;

Geração de protocolo e notificação ao analista

Após coletar tudo, o bot gera o protocolo no sistema legado e devolve o número ao segurado. Mesmo que o sistema legado não tenha API, a maioria das seguradoras tem um endpoint interno ou fila SAP que aceita JSON.

async function gerarProtocolo(sinistro) {
  // Chama sistema legado interno
  const { data } = await axios.post(
    `${process.env.LEGADO_URL}/sinistros`,
    {
      apoliceId: sinistro.dados.apoliceId,
      tipo: sinistro.dados.tipo,
      dataOcorrencia: sinistro.dados.dataHora,
      local: sinistro.dados.local,
      relato: sinistro.dados.relato,
      fotos: sinistro.fotos.map((f) => f.mediaUrl),
    },
    { headers: { Authorization: `Bearer ${process.env.LEGADO_TOKEN}` } }
  );
  return data.protocolo; // ex: "SIN-2026-887713"
}

// Após COLETA_RELATO completa
const protocolo = await gerarProtocolo(sinistro);
sinistro.dados.protocolo = protocolo;

await ZAP.post(`/instances/${instanceId}/messages`, {
  to: phone,
  type: "text",
  text: {
    body:
      `Sinistro aberto com sucesso!\n\n` +
      `Protocolo: *${protocolo}*\n\n` +
      `Próximo passo: agendar vistoria. Vou te enviar 3 horários disponíveis nas próximas horas.\n\n` +
      `Acompanhe seu sinistro digitando *status* a qualquer momento.`,
  },
});
sinistro.state = "AGENDANDO_VISTORIA";

Notificações de status proativas

Não espere o segurado perguntar. A cada mudança de status no sistema interno, dispare mensagem WhatsApp. Webhook reverso interno → ZAP API:

// Endpoint interno disparado pelo sistema de análise
app.post("/internal/sinistro-status-changed", async (req, res) => {
  const { protocolo, status, telefone, observacao, instanceId } = req.body;

  const mensagens = {
    em_analise: `Seu sinistro ${protocolo} entrou em análise. Prazo estimado: 5 dias úteis.`,
    perita_agendada: `Vistoriador irá em ${observacao}. Mantenha o veículo no local combinado.`,
    aprovado: `Sinistro ${protocolo} APROVADO. Indenização será depositada em até 3 dias úteis.`,
    pendente_documento: `Falta documento: ${observacao}. Por favor mande aqui.`,
    negado: `Sinistro ${protocolo} negado. Motivo: ${observacao}. Para recurso, responda *recurso*.`,
  };

  await ZAP.post(`/instances/${instanceId}/messages`, {
    to: telefone,
    type: "text",
    text: { body: mensagens[status] || `Atualização: ${status}` },
  });

  res.json({ ok: true });
});

LGPD: consentimento explícito

Sinistro envolve dados sensíveis (saúde no caso de seguro de vida, localização precisa, fotos com terceiros). LGPD exige base legal específica. Na primeira interação:

case "INICIO":
  // Antes de pedir CPF, registra consentimento
  await ZAP.post(`/instances/${instanceId}/messages`, {
    to: phone,
    type: "buttons",
    buttons: {
      text:
        "Para abrir seu sinistro precisamos coletar dados pessoais (CPF, fotos, localização) por base legal de execução de contrato (LGPD Art. 7º V). Confirma que deseja prosseguir?",
      buttons: [
        { id: "aceito", text: "Sim, prosseguir" },
        { id: "recuso", text: "Não, cancelar" },
      ],
    },
  });
  sinistro.state = "AGUARDANDO_CONSENTIMENTO";
  break;

case "AGUARDANDO_CONSENTIMENTO":
  if (message.body?.text === "aceito") {
    sinistro.consentimento = { aceito: true, em: new Date().toISOString(), ip: message.metadata?.ip };
    sinistro.state = "INICIO";
    await replyText(instanceId, phone, "Obrigada. Pode digitar seu CPF (apenas números).");
  }
  break;

Esse sinistro.consentimento entra no audit log e satisfaz a base legal exigida pela ANS e ANPD.

Casos práticos

Auto: batida pequena em estacionamento

Cliente bateu retrovisor. Abre sinistro 14:00, manda 4 fotos e localização do shopping, recebe protocolo às 14:08. Vistoriador agenda para o dia seguinte 10h. Pagamento aprovado em 4 dias úteis. Tempo total de cliente investido: 12 minutos.

Residencial: furto durante viagem

Cliente volta da praia, encontra casa arrombada. Liga pra polícia, depois abre sinistro pelo WhatsApp. Manda BO em PDF (type:document), fotos do estrago e lista do que sumiu (texto livre). Bot pede 3 ângulos diferentes, encaminha pro analista. Em vez de visita presencial, perícia faz vídeochamada via WhatsApp para ver os cômodos.

Vida: internação

Esposa do segurado acessa o WhatsApp do cônjuge internado, abre sinistro de hospitalização. Manda fotos da internação, atestado, guia médica (PDF). Bot detecta tipo "saúde" e roteia para fila prioritária. Reembolso aprovado em 24h.

FAQ

Como detectar tentativa de fraude?

Cruze metadados: hora da mensagem vs timestamp da foto (EXIF), localização declarada vs GPS da foto, tempo entre fotos (3 fotos enviadas em 8 segundos seguidos = câmera; em 4 minutos = mais provável real). Sinistros suspeitos vão para fila de revisão humana antes de aprovação.

Funciona com sistema legado COBOL/AS400?

Sim. A integração não exige API REST nativa do legado — basta um middleware (Node, Python, Java) que: (1) recebe webhook do WhatsApp, (2) traduz pra formato do legado (DB direto, fila MQ, arquivo CSV), (3) lê resposta e devolve. Sua TI já tem esse padrão de "anti-corrosion layer".

Posso fazer perícia 100% online?

Para sinistros de baixa monta (até R$5k em auto, até R$10k em residencial), sim — vídeochamada WhatsApp com vistoriador segura o caso. Acima disso ainda recomendamos perícia presencial pra evitar contestação judicial. Sua circular interna define a régua.

Segurador direto vs corretor — quem manda mensagem?

Em modelo bilateral (segurador → cliente direto), seguradora opera a instância. Em modelo via corretor, corretor pode usar a instância dele com white-label da seguradora ou acessar painel multi-tenant da seguradora. Ambos os modelos estão suportados.

E se o cliente prefere ligar pra central?

WhatsApp não substitui — complementa. Bot mantém botão "falar com atendente" em todos os estados, que abre ticket na fila humana sem perder contexto. NPS de quem prefere telefone também sobe quando o canal alternativo é decente, porque a fila telefônica desafoga.

Pronto para abrir sinistro via WhatsApp na sua seguradora? A ZAP API atende seguradoras de pequeno e médio porte com modelo de instância dedicada e SLA de envio para casos críticos. Criar conta grátis e testar com sandbox antes de migrar a operação real.

Experimente a ZAP API gratuitamente

7 dias de trial sem precisar de cartão. A partir de R$29/mês*.

Criar instância grátis
EE
Equipe Editorial ZAP APIRevisão técnica

Desenvolvedores e especialistas em integrações WhatsApp. Todo conteúdo passa por revisão técnica para garantir precisão e aplicabilidade.

Ver perfil completoDocumentaçãoTrial grátis

Leia também

Vertical · 16 de jun. de 2026 · 10 min

WhatsApp API para petshops e clínicas veterinárias: lembretes, vacina e recompra

Como petshops e veterinárias usam a API de WhatsApp para reduzir faltas e aumentar recorrência: lembrete de banho e tosa, vacina em dia, recompra de ração e pós-consulta.

Vertical · 17 de jun. de 2026 · 10 min

WhatsApp API para concessionárias e oficinas: revisão, orçamento e pós-venda

Fluxos de WhatsApp via API para concessionárias e oficinas mecânicas: lembrete de revisão programada, aprovação de orçamento, status do veículo, recall e funil de vendas.

Vertical · 18 de jun. de 2026 · 10 min

WhatsApp API para salões de beleza e barbearias: acabe com o no-show

Como salões e barbearias usam a API de WhatsApp para derrubar o no-show e fidelizar: confirmação automática, lembrete na véspera, recorrência no intervalo certo e horário vago.

Vertical · 29 de mai. de 2026 · 11 min

WhatsApp API para academias: renovação, presença e motivação

Como academias e estúdios fitness usam WhatsApp API para lembrar renovações, confirmar aulas, enviar treinos e manter alunos engajados para reduzir churn.

Tópicos:Chatbots com IAE-commerceAPI WhatsApp

Explore também

Casos de usoWhatsApp API por segmentoComparativoZAP API vs alternativasPreçosPlanos e o que está inclusoGlossárioTermos técnicos de WhatsApp API
ZAP-API

API REST para WhatsApp com webhooks assinados, Meta Pixel/CAPI e compliance LGPD. Sem aprovação da Meta.

Status operacional🇧🇷 Feito no Brasil

Produto

  • Preços
  • Casos de uso
  • Comparativo
  • Trial grátis
  • Dashboard

Recursos

  • Documentação
  • Blog
  • Glossário
  • RSS Feed

Empresa

  • Sobre
  • Imprensa
  • Termos de uso
  • Privacidade
  • Criar conta
  • Login

Contato

  • [email protected]
  • [email protected]
  • Resposta em até 24h úteis
© 2026 ZAP-API — Todos os direitos reservados·CNPJ 42.130.949/0001-56·Termos·Privacidade

Desenvolvido por PreviusIA