Webhooks para monitoramento processual: como receber alertas em tempo real via API

Entenda, primeiramente, a diferença entre polling e webhooks; além disso, veja a arquitetura de referência e, consequentemente, configure alertas automáticos para qualquer movimentação processual.

Webhooks para monitoramento processual: como receber alertas em tempo real via API
Público: Devs e Arquitetos de Software Leitura: ~14 min Feature exclusiva Judit SEO Focus: webhook-monitoramento-processual

Imagine que você está esperando uma encomenda importante. Você tem duas opções: ligar para a transportadora a cada hora perguntando “chegou?”, ou simplesmente pedir para eles te enviarem uma mensagem quando a entrega for feita.

A primeira opção é o polling. A segunda é o webhook. E essa diferença, que parece simples, tem um impacto enorme na eficiência de sistemas de monitoramento processual — especialmente quando integrados a uma plataforma como a Judit.

Polling: o jeito ineficiente de monitorar

No modelo de polling, o seu sistema fica perguntando para a API periodicamente: “Esse processo teve alguma atualização?” — a cada 5 minutos, a cada hora, a cada dia. Na maior parte dessas consultas, a resposta será “não”. Você está consumindo recursos, pagando por requisições e introduzindo latência sem nenhum motivo.

🔄 Polling — Você pergunta
  • Seu sistema consulta a API repetidamente
  • 90% das consultas retornam “sem novidades”
  • Consome cota de API desnecessariamente
  • Latência mínima = intervalo entre consultas
  • Escala mal: 1.000 processos = 1.000 chamadas/ciclo
  • Infraestrutura ociosa na maior parte do tempo
VS
⚡ Webhook — A API te avisa
  • A API empurra dados quando algo muda
  • 100% das notificações são relevantes
  • Zero consumo de cota sem motivo
  • Latência mínima = segundos após o evento
  • Escala perfeitamente: 10.000 processos, mesmo esforço
  • Infraestrutura só ativa quando há dados novos
⚡ Por que a Judit é única nesse ponto

A Judit é a única API jurídica brasileira que oferece webhooks nativos para monitoramento processual. Isso significa que você pode monitorar dezenas de milhares de processos sem uma única requisição de polling — a API simplesmente te avisa quando algo acontece. Conheça os planos disponíveis para encontrar o que melhor se encaixa no seu volume de monitoramento.

Como funcionam os webhooks na Judit

O fluxo é simples: você cadastra um endereço (URL) no seu sistema que a Judit possa “chamar” quando houver uma atualização. Quando um processo monitorado tem uma nova movimentação — uma decisão, um andamento, uma sentença — a Judit faz uma requisição POST para a sua URL com os dados da atualização. Todos os detalhes técnicos estão disponíveis na documentação oficial.

🏗️ Arquitetura de referência — Monitoramento com Webhooks
📝
Cadastro
Você registra CPF, CNPJ ou processo para monitorar + sua URL de webhook
🔍
Judit Monitora
A Judit verifica 90+ tribunais continuamente em background
Evento Detectado
Nova movimentação, decisão ou distribuição encontrada
🔔
Notificação
Judit faz POST para sua URL com payload JSON da atualização
⚙️
Seu Sistema Age
Dispara alerta, atualiza banco, notifica usuário, aciona workflow

Passo 1 — Configurando o monitoramento via API

Para iniciar o monitoramento de um CPF, CNPJ ou processo, você usa o endpoint de tracking da Judit. Consulte a documentação para ver todos os parâmetros disponíveis:

configurar_monitoramento.py
import requests
import os

API_KEY = os.getenv("JUDIT_API_KEY")
TRACKING_ENDPOINT = "https://tracking.prod.judit.io/tracking"

def iniciar_monitoramento(cpf_cnpj: str, webhook_url: str) -> dict:
    """Cadastra uma entidade para monitoramento contínuo."""

    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    }

    payload = {
        "search_type": "cpf_cnpj",
        "search_key": cpf_cnpj,
        "webhook_url": webhook_url,    # URL que receberá as notificações
        "notification_config": {
            "on_new_lawsuit": True,      # Avisa em novos processos
            "on_movement": True,          # Avisa em movimentações
            "on_decision": True           # Avisa em decisões
        }
    }

    response = requests.post(TRACKING_ENDPOINT, headers=headers, json=payload)
    response.raise_for_status()
    return response.json()


# Exemplo de uso:
resultado = iniciar_monitoramento(
    cpf_cnpj="12345678000190",  # CNPJ da empresa monitorada
    webhook_url="https://meusite.com/webhook/judit"
)
print(f"Monitoramento ativado! ID: {resultado['tracking_id']}")

Passo 2 — Criando o endpoint que recebe o webhook

Agora você precisa criar uma rota no seu servidor que receba as notificações da Judit. Aqui está um exemplo completo com Flask (Python) e Express (Node.js):

webhook_server.py — Flask
from flask import Flask, request, jsonify
import logging

app = Flask(__name__)
logging.basicConfig(level=logging.INFO)

@app.route("/webhook/judit", methods=["POST"])
def receber_webhook():
    """Endpoint que recebe notificações da Judit."""

    payload = request.get_json()

    if not payload:
        return jsonify({"error": "payload inválido"}), 400

    # Identifica o tipo de evento
    event_type = payload.get("event_type")  # "new_lawsuit" | "movement" | "decision"
    tracking_id = payload.get("tracking_id")
    entity = payload.get("search_key")  # CPF ou CNPJ monitorado

    logging.info(f"Evento recebido: {event_type} | Entidade: {entity}")

    # Processa conforme o tipo de evento
    if event_type == "new_lawsuit":
        processar_novo_processo(payload)
    elif event_type == "movement":
        processar_movimentacao(payload)
    elif event_type == "decision":
        processar_decisao(payload)

    # IMPORTANTE: sempre retorne 200 rapidamente
    # Processe em background se necessário (fila, celery, etc.)
    return jsonify({"status": "ok"}), 200


def processar_novo_processo(payload):
    lawsuit = payload.get("lawsuit", {})
    numero_cnj = lawsuit.get("cnj_number")
    assunto = lawsuit.get("subject")
    tribunal = lawsuit.get("court")
    logging.info(f"🚨 NOVO PROCESSO: {numero_cnj} | {assunto} | {tribunal}")
    # → Aqui você envia email, Slack, WhatsApp, salva no banco, etc.


if __name__ == "__main__":
    app.run(port=5000)

Estrutura do payload que você vai receber

exemplo de payload recebido (JSON)
{
  "event_type": "new_lawsuit",
  "tracking_id": "track_xyz789",
  "search_key": "12345678000190",          // CNPJ monitorado
  "timestamp": "2026-03-10T14:32:00Z",
  "lawsuit": {
    "cnj_number": "0001234-56.2026.8.26.0100",
    "subject": "Cobrança",
    "court": "TJSP",
    "filing_date": "2026-03-10",
    "value": 15000.00,
    "parties": [
      { "role": "author", "name": "João Silva", "cpf": "111.222.333-44" },
      { "role": "defendant", "name": "Empresa XYZ LTDA", "cnpj": "12.345.678/0001-90" }
    ]
  }
}

Boas práticas para um endpoint de webhook robusto

PráticaPor quêComo implementar
Responda em menos de 5 segundosA Judit pode considerar falha e reenviar se demorarProcesse em background (Celery, Bull, SQS)
Retorne sempre HTTP 200Indica que o payload foi recebido com sucessoSalve na fila e responda antes de processar
Trate duplicatasReenvios podem ocorrer em caso de falha de redeUse o tracking_id + timestamp como chave única
Proteja o endpointEvita que terceiros enviem dados falsosValide o IP de origem ou use um token secreto
Use HTTPSDados processuais são sensíveisCertificado SSL obrigatório (Let’s Encrypt é gratuito)

Casos de uso: o que fazer quando o webhook chegar

Uma vez que você recebe o payload da Judit, as possibilidades são infinitas. Os casos mais comuns são:

exemplos de ações pós-webhook
# 1. Enviar alerta no Slack
def notificar_slack(payload):
    lawsuit = payload['lawsuit']
    mensagem = f"""🚨 *Novo processo detectado*
• Número: {lawsuit['cnj_number']}
• Assunto: {lawsuit['subject']}
• Tribunal: {lawsuit['court']}
• Valor: R$ {lawsuit['value']:,.2f}"""
    requests.post(SLACK_WEBHOOK_URL, json={"text": mensagem})

# 2. Salvar no banco de dados
def salvar_banco(payload):
    db.lawsuits.upsert(
        {"cnj_number": payload['lawsuit']['cnj_number']},
        payload['lawsuit']
    )

# 3. Atualizar planilha Google Sheets via API
# 4. Enviar email para o responsável
# 5. Acionar workflow no n8n, Make ou Zapier
# 6. Criar tarefa no Asana / Jira para o time jurídico
# 7. Enviar mensagem no WhatsApp via Zapi/Twilio
🧩 Integração com n8n, Make e Zapier

Se você não quer escrever código para o servidor de webhooks, use n8n, Make ou Zapier: configure um trigger “Webhook” nessas plataformas, use a URL gerada como destino no monitoramento da Judit, e conecte visualmente a qualquer destino — Slack, Gmail, Google Sheets, Notion, e muito mais. O próximo artigo desta série cobre esse fluxo em detalhes. Veja também os planos da Judit para entender os limites de notificação de cada tier.

Configure seu primeiro webhook agora

Crie uma conta na Judit, ative o monitoramento de um CNPJ e receba o primeiro alerta em tempo real.

Quer saber como a Judit pode ajudar seu negócio?

Compartilhe o artigo

Veja outros artigos