Engenharia

API de monitoramento de CNPJ: eventos, webhooks e CloudEvents

Atualizado em 7 de julho de 20264 min de leitura

Uma API de monitoramento de CNPJ entrega alterações de registros corporativos — status, quadro societário, capital, endereço e CNAE — como eventos estruturados, em vez de exigir consultas repetidas. No modelo push, cada mudança chega por webhook no padrão CloudEvents v1.0, com tipo, data e o conteúdo do antes e do depois.

A maioria das integrações com dados de CNPJ nasce igual: um job que consulta uma API de consulta para cada empresa da base, compara com o que está no banco e tenta descobrir o que mudou. Funciona no protótipo — e vira um problema de engenharia conforme a carteira cresce: rate limits, custo por consulta, diffs frágeis e a pergunta sem resposta boa: "com que frequência a gente re-consulta?".

Este artigo mostra a alternativa: consumir uma API de monitoramento de CNPJ orientada a eventos — o que muda no modelo, como é a anatomia de um evento societário no padrão CloudEvents v1.0 e as boas práticas para receber webhooks em produção.

Consulta (pull) vs. eventos (push)

No modelo pull, a detecção de mudanças é problema seu: você agenda consultas, armazena estados e calcula diferenças. No modelo push, a detecção é do provedor: o seu sistema recebe apenas o fato relevante — "o QSA da empresa X mudou às 14h32, de A para B".

Pull (re-consulta periódica)Push (eventos/webhooks)
Latência de detecçãoIgual ao intervalo do pollingMinutos após o registro
Custo em escalaCresce com carteira × frequênciaProporcional às mudanças reais
Detecção do diffImplementada e mantida por vocêEntregue pronta no evento (antes/depois)
HistóricoSó se você armazenar cada snapshotLinha do tempo de eventos versionados
Carga de infraestruturaJobs, filas e rate limitsUm endpoint HTTP idempotente

Anatomia de um evento societário (CloudEvents v1.0)

O CloudEvents é uma especificação da CNCF que padroniza o envelope de eventos: os mesmos atributos (id, source, type, time, subject, data) independentemente do transporte. Usar um padrão aberto significa que o evento entra direto em ferramentas que já falam CloudEvents — brokers, funções serverless, pipelines — sem parser proprietário.

Um evento de alteração de quadro societário emitido pela Timeax tem esta forma:

{
  "specversion": "1.0",
  "id": "evt_01j9x7k2m3",
  "source": "https://timeax.tech/monitoring",
  "type": "tech.timeax.company.qsa.changed",
  "subject": "cnpj:12345678000190",
  "time": "2026-07-07T14:32:08Z",
  "datacontenttype": "application/json",
  "data": {
    "cnpj": "12.345.678/0001-90",
    "field": "qsa",
    "before": [
      { "nome": "MARIA SILVA", "qualificacao": "Sócio-Administrador" },
      { "nome": "JOÃO SOUZA", "qualificacao": "Sócio" }
    ],
    "after": [
      { "nome": "MARIA SILVA", "qualificacao": "Sócio-Administrador" },
      { "nome": "CARLOS PEREIRA", "qualificacao": "Sócio" }
    ],
    "diff": {
      "added": [{ "nome": "CARLOS PEREIRA", "qualificacao": "Sócio" }],
      "removed": [{ "nome": "JOÃO SOUZA", "qualificacao": "Sócio" }]
    }
  }
}

Três decisões de design valem destacar: o type é hierárquico e filtrável (company.qsa.changed, company.status.changed, company.capital.changed…); o subject identifica a entidade monitorada, permitindo roteamento sem abrir o payload; e o data carrega antes, depois e diff — o consumidor não precisa manter estado próprio para saber o que mudou.

Boas práticas para receber webhooks

Valide a assinatura

Todo webhook sério assina as entregas (tipicamente HMAC do corpo com um segredo compartilhado, enviado em um header). Rejeite requisições com assinatura inválida — o endpoint é público e receberá tráfego que não é do provedor.

Responda rápido, processe depois

Confirme o recebimento (HTTP 2xx) imediatamente e delegue o processamento a uma fila. Endpoints que processam de forma síncrona estouram timeout, provocam retries e criam duplicatas.

Seja idempotente

Entregas de webhook são tipicamente *at-least-once*: em caso de falha de rede, o mesmo evento pode chegar duas vezes. Use o id do CloudEvent como chave de deduplicação antes de disparar qualquer ação de negócio.

Não dependa da ordem

Retries e paralelismo podem inverter a ordem de chegada. Use o atributo time do evento (momento da detecção) — não o horário de recebimento — para ordenar a linha do tempo de uma empresa.

Tenha um plano de recuperação

Se o seu endpoint ficar fora do ar, os eventos do período precisam ser recuperáveis. É o papel do endpoint REST de listagem (GET /v1/events, com filtros por período e por CNPJ): reconciliar o que os webhooks eventualmente perderam.

Para onde levar os eventos

  • Workflow de complianceqsa.changed reabre o caso de KYC do cliente automaticamente (due diligence contínua);
  • Motor de créditocapital.changed e status.changed recalculam score e limite do CNPJ (mudanças de situação cadastral);
  • CRM/ERP — endereço e CNAE atualizam o cadastro mestre sem redigitação;
  • Data warehouse — a linha do tempo de eventos vira tabela fato para modelos e análises;
  • Alertas operacionais — conectores para Slack/Teams notificam o dono do contrato no canal onde ele já trabalha.

O panorama completo do que monitorar — e por quê — está no nosso guia de monitoramento de CNPJ. Para conhecer os canais de entrega da Timeax (painel, GET /v1/events e webhooks CloudEvents), veja a página do produto.

Perguntas frequentes

O que é uma API de monitoramento de CNPJ?

É uma API que entrega alterações nos registros públicos de empresas — situação cadastral, QSA, capital social, endereço e CNAE — como eventos estruturados, por webhook ou endpoint de listagem. Difere da API de consulta, que apenas retorna o estado atual quando perguntada.

O que é o padrão CloudEvents?

CloudEvents é uma especificação aberta da CNCF que padroniza o formato de eventos: atributos como id, source, type, subject, time e data. Eventos nesse padrão são interoperáveis com brokers, funções serverless e pipelines que já suportam a especificação, dispensando formatos proprietários.

Por que usar webhooks em vez de consultar a API periodicamente?

Porque a carteira inteira raramente muda: re-consultar milhares de CNPJs para achar poucas alterações gasta cota, rede e engenharia de diff. Com webhooks, o provedor detecta a mudança e envia só o fato relevante, com latência de minutos e custo proporcional às mudanças reais.

Como garantir que nenhum evento de webhook se perca?

Combine três práticas: responda 2xx rápido e processe de forma assíncrona; deduplique pelo id do evento (entregas são at-least-once); e reconcilie periodicamente com o endpoint de listagem de eventos, que permite recuperar o que o endpoint perdeu durante indisponibilidades.

Saiba na hora quando uma empresa mudar

A Timeax monitora capital, QSA, endereço, CNAE e status de CNPJ e entrega cada mudança como evento estruturado — no painel, por API e por webhooks.

Garantir Acesso Antecipado

Fontes e referências

Leia também