ProcessOnlineProcessOnline

    API ProcessOnline

    Cópia integral numa chamada

    Envie o número CNJ (ou descubra por CPF/CNPJ). Nosso robô obtém os autos no tribunal e devolvemos o inteiro teor em PDF.

    Antes de começar

    Acesso B2B, mediante aprovação

    A API é para empresas e escritórios. O acesso e as chaves são liberados após o cadastro de parceiro ser aprovado no painel.

    Créditos pré-pagos

    Cada cópia entregue consome 1 crédito (ou a cota do plano de fatura). Verificar um processo é grátis; sem saldo, a solicitação responde 402.

    Fontes públicas e LGPD

    Obtemos autos acessíveis publicamente, na condição de não-parte. O parceiro é responsável pelo uso dos dados (LGPD).

    Como a API funciona

    Não tem o número? Descubra por CPF ou CNPJPOST /api-search-documentoDevolve a lista de processos (números CNJ) — use-os no passo 3.
    1. 1BearerAutentiqueHeader Authorization: Bearer com sua chave.
    2. 2grátisVerifiquePOST /api-verifyO processo existe? Tribunal, classe e partes.
    3. 31 créditoSolicite a cópiaPOST /api-create-requestCria o pedido do inteiro teor.
    4. 4Robô obtém no tribunalCache: segundos · tribunal: minutos.
    5. 5Webhook avisarequest.completedSeu sistema é notificado (HMAC-SHA256).
    6. 6Baixe o PDFGET /api-downloadURL assinada · arquivo por 7 dias.

    Falha ou segredo de justiça (passos 4–5): o processo não é entregue e o crédito volta automaticamente como saldo — você recebe o evento request.failed ou request.secret.

    Referência

    Endpoints, conceitos, webhooks e códigos de erro. A execução de chamadas e a criação de chaves ficam na área autenticada do Painel do Parceiro.

    ·

    Visão geral

    A API ProcessOnline entrega a CÓPIA INTEGRAL de processos judiciais (o inteiro teor em PDF) sob demanda. Você envia o número CNJ, nosso robô obtém os autos no tribunal e devolvemos o documento — o que as APIs de dados jurídicos não fazem (elas só retornam metadados).

    COMO FUNCIONA

    1. Verifique o processo (existe? qual tribunal/partes?) — grátis.
    2. Solicite a cópia — consome 1 crédito (ou a cota mensal, no plano fatura).
    3. Nosso robô obtém os autos no tribunal (segundos, se já temos em cache; caso contrário, minutos).
    4. Avisamos seu sistema pelo webhook quando fica pronto.
    5. Baixe o PDF por uma URL assinada (o arquivo fica disponível por 7 dias).
    Base URL: https://api.processonline.com.br/functions/v1
    Auth:     HTTP Bearer — header Authorization: Bearer <sua-chave>. Chaves po_test_ (sandbox, sem custo) e po_live_ (produção).

    Comece em minutos

    1. Crie sua conta e o cadastro de parceiro no Painel do Parceiro (/app/parceiro).
    2. Gere uma chave de TESTE (po_test_…) e valide a integração sem custo.
    3. Descubra processos por pessoa/empresa: POST /api-search-documento com o CPF ou CNPJ (debita só no sucesso).
    4. Verifique um processo específico: POST /api-verify com o número CNJ.
    5. Solicite a cópia: POST /api-create-request (com a chave de teste, use um dos CNJs canário listados no painel).
    6. Configure seu webhook e valide a assinatura HMAC (evento webhook.test disponível no painel).
    7. Troque para a chave LIVE, compre créditos e vá para produção.

    Conceitos

    Autenticação

    Toda requisição usa `Authorization: Bearer <chave>`. A chave é criada no Painel do Parceiro e exibida uma única vez — guarde-a em cofre. Chaves podem ser revogadas e rotacionadas sem downtime (várias chaves ativas convivem).

    Ambientes (test e live)

    `po_test_` opera em sandbox: não debita créditos e só aceita os CNJs de exemplo (canários), devolvendo um PDF de amostra no download — ideal para integrar sem custo. A lista dos canários aceitos está no topo da aba Documentação do painel; qualquer outro CNJ responde 403 `test_mode_cnj` com três canários em `examples`. `po_live_` opera de verdade.

    Idempotência

    Envie o header `Idempotency-Key` (até 64 caracteres) ao solicitar uma cópia. Repetir a mesma key devolve exatamente o mesmo pedido, sem cobrar de novo — retries de rede são seguros.

    Limites de requisição

    Há um teto de requisições por minuto por parceiro (negociável). Ao excedê-lo, a API responde 429 — respeite o recuo e tente novamente.

    Retenção e segredo de justiça

    O PDF fica disponível por 7 dias após pronto — persista sua cópia. Processos em segredo de justiça não são fornecidos e o crédito é devolvido automaticamente.

    Endpoints

    POST
    /api-search-documento— Buscar processos por CPF ou CNPJ

    Recebe um documento (CPF de 11 dígitos ou CNPJ de 14) e devolve a lista de processos daquela pessoa/empresa nas bases nacionais, com TODOS os dados que a base entrega por processo (número CNJ, partes, capa, área, classe, assunto, situação, valor da causa, órgão julgador, movimentações, fontes por tribunal), mais o bloco `envolvido` (nome, OABs, quadro societário, total de processos) e o `paginator`. Debita 1 crédito SÓ quando a consulta é bem-sucedida — nada encontrado (lista vazia) e indisponibilidade da base não cobram. O mesmo documento consultado de novo em até 24h vem do cache, sem novo débito. Use o `numero_cnj` de cada processo para pedir a cópia integral em seguida. Com chave de teste, use os documentos de exemplo (111.444.777-35 ou 47.968.189/0001-74).

    curl -X POST https://api.processonline.com.br/functions/v1/api-search-documento \
      -H "Authorization: Bearer po_live_SUACHAVE" \
      -H "Idempotency-Key: busca-12345" \
      -H "Content-Type: application/json" \
      -d '{"documento":"47.968.189/0001-74"}'

    Resposta

    {
      "documento_tipo": "cnpj",
      "version": "1",
      "total": 2,
      "envolvido": {
        "nome": "EMPRESA X LTDA",
        "tipo_pessoa": "JURIDICA",
        "quantidade_processos": 2,
        "quantidade_processos_retornados": 2,
        "oabs": [],
        "quadro_societario": []
      },
      "paginator": { "per_page": 20 },
      "results": [
        {
          "id": 868872297,
          "numero_cnj": "0801234-56.2023.8.19.0001",
          "ano_inicio": 2023,
          "data_inicio": "2023-04-10",
          "titulo_polo_ativo": "Fulano de Tal",
          "titulo_polo_passivo": "Empresa X S.A.",
          "estado_origem": { "nome": "Rio de Janeiro", "sigla": "RJ" },
          "unidade_origem": { "nome": "1a Vara Civel", "tribunal_sigla": "TJRJ" },
          "quantidade_movimentacoes": 42,
          "data_ultima_movimentacao": "2026-08-19",
          "fontes_tribunais_estao_arquivadas": false,
          "fontes": [
            {
              "id": 1, "sigla": "TJRJ", "grau": 1, "tipo": "TRIBUNAL", "sistema": "PJe",
              "capa": {
                "area": "Civel", "classe": "PROCEDIMENTO COMUM CIVEL", "assunto": "Contratos",
                "situacao": "ATIVO", "valor_causa": { "valor": "10000.00", "moeda": "R$" },
                "orgao_julgador": "1a Vara Civel", "data_distribuicao": "2023-04-10"
              }
            }
          ]
        }
      ],
      "credits_charged": 1
    }
    POST
    /api-verify— Verificar existência

    Confirma se o processo existe e devolve tribunal, classe e partes. Grátis (com limite por minuto) — use antes de gastar um crédito.

    curl -X POST https://api.processonline.com.br/functions/v1/api-verify \
      -H "Authorization: Bearer po_live_SUACHAVE" \
      -H "Content-Type: application/json" \
      -d '{"cnj":"5062404-56.2024.8.13.0702"}'

    Resposta

    {
      "exists": true,
      "cnj": "50624045620248130702",
      "tribunal": "TJMG",
      "classe": "PROCEDIMENTO COMUM CÍVEL",
      "parties": { "active": "Fulano", "passive": "Banco X" }
    }
    POST
    /api-create-request— Solicitar a cópia integral

    Cria a solicitação e debita 1 crédito (ou consome a cota mensal, no regime de fatura). Envie o header Idempotency-Key (até 64 caracteres) para retries seguros: a mesma key devolve o mesmo pedido sem débito novo. Declare o motivo do pedido em `interesse` — os autos trazem dados de pessoas que não são você, e registramos a finalidade junto do pedido (Lei 11.419/2006, art. 11, § 7º). Valores: parte, advogado, arrematante, sucessor, credor, outro. Com `advogado`, mande também `interesse_detalhe` com a inscrição na OAB (ex.: "MG 123456"). O campo é opcional hoje e será obrigatório — quem já envia não precisa mudar nada depois. Sem webhook configurado, a resposta traz `hint` com o código `no_webhook`: alguns tribunais levam horas, e sem o webhook você só fica sabendo que o pedido ficou pronto consultando `/api-get-request`.

    curl -X POST https://api.processonline.com.br/functions/v1/api-create-request \
      -H "Authorization: Bearer po_live_SUACHAVE" \
      -H "Idempotency-Key: pedido-12345" \
      -H "Content-Type: application/json" \
      -d '{"cnj":"5062404-56.2024.8.13.0702","interesse":"advogado","interesse_detalhe":"MG 123456"}'

    Resposta

    {
      "request_id": "f0995809-0bee-4e8c-bc52-fb14ec3d80f5",
      "status": "processing",
      "credits_charged": 1,
      "hint": { "code": "no_webhook", "message": "Sem webhook configurado: …" }
    }
    GET
    /api-get-request— Acompanhar a solicitação

    Status público: processing | completed | failed | secret | expired. Em failed/secret o crédito é devolvido (campo refunded). Prefira o webhook a consultar em loop: o tempo até ficar pronto vai de minutos a horas, conforme o tribunal.

    curl "https://api.processonline.com.br/functions/v1/api-get-request?id=REQUEST_ID" \
      -H "Authorization: Bearer po_live_SUACHAVE"

    Resposta

    {
      "request_id": "f0995809-…",
      "cnj": "50624045620248130702",
      "status": "completed",
      "expires_at": "2026-08-27T02:27:48Z",
      "credits_charged": 1,
      "refunded": false
    }
    GET
    /api-download— Baixar o PDF

    Devolve uma URL assinada válida por 1 hora — gere uma nova a cada download. O arquivo fica disponível por 7 dias após ficar pronto (persista sua cópia). Com chave de teste, devolve um PDF de exemplo. Processos muito grandes são entregues em PARTES de até 200 MB: confira sempre parts_count e baixe todas as parts[] — download_url aponta apenas para a parte 1.

    curl "https://api.processonline.com.br/functions/v1/api-download?id=REQUEST_ID" \
      -H "Authorization: Bearer po_live_SUACHAVE"

    Resposta

    {
      "request_id": "f0995809-…",
      "download_url": "https://api.processonline.com.br/storage/v1/object/sign/…",
      "parts_count": 3,
      "parts": [
        { "idx": 1, "url": "https://…/parte-01-de-03.pdf?token=…", "bytes": 209715200 },
        { "idx": 2, "url": "https://…/parte-02-de-03.pdf?token=…", "bytes": 209715200 },
        { "idx": 3, "url": "https://…/parte-03-de-03.pdf?token=…", "bytes": 94371840 }
      ],
      "expires_in": 3600,
      "file_expires_at": "2026-08-27T02:27:48Z"
    }

    Webhooks

    Configure uma URL HTTPS no painel e receba os eventos abaixo, assinados com HMAC-SHA256 no header X-PO-Signature. O webhook avisa; o download se busca. Retentativas com backoff por até 8 tentativas; trate de forma idempotente por request_id + event.

    request.completedO PDF está pronto — baixe pelo endpoint de download (o payload traz uma download_url de cortesia válida por 1h, e parts_count: se for maior que 1, o processo saiu em partes e download_url é só a primeira).
    request.failedNão foi possível obter o processo; crédito estornado quando aplicável.
    request.secretProcesso em segredo de justiça — sem arquivo; o crédito volta como saldo.

    Validação da assinatura (Node.js)

    const crypto = require("crypto");
    function verify(rawBody, signatureHeader, secret) {
      const t = signatureHeader.match(/t=(\d+)/)?.[1];
      const v1 = signatureHeader.match(/v1=([0-9a-f]+)/)?.[1];
      if (!t || !v1) return false;
      if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false; // anti-replay 5 min
      const expected = crypto.createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
      return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
    }

    Códigos de erro

    Erros retornam { "error": { "code", "message" } } com o HTTP status correspondente.

    HTTPcodeQuando
    401unauthorizedChave ausente, inválida ou revogada (resposta única, sem distinção).
    429rate_limitedLimite de requisições por minuto excedido.
    422invalid_cnjCNJ com formato, dígito verificador ou ano inválidos.
    402insufficient_creditsSem saldo de créditos — compre no painel do parceiro.
    404not_foundSolicitação inexistente (ou de outra conta).
    409not_readyDocumento ainda em obtenção no tribunal.
    410expiredArquivo expirou (retenção de 7 dias) — solicite novamente.
    403test_mode_cnjChave de teste só aceita CNJs de exemplo (canários). A resposta traz `examples` com três CNJs aceitos; a lista completa está no painel.
    422invalid_interesseO `interesse` não está na lista (parte, advogado, arrematante, sucessor, credor, outro) ou é `advogado` sem `interesse_detalhe` com a inscrição na OAB.
    422sem_autenticacaoParceiro com credencial própria (robô dedicado) sem acesso cadastrado para o tribunal do processo. O corpo traz `login_que_falta`: os acessos a cadastrar em "Suas credenciais". Nada é cobrado.
    422invalid_documentBusca por documento: o campo `documento` não é um CPF (11) nem CNPJ (14) válido.
    403test_mode_documentBusca por documento com chave de teste: use um dos documentos de exemplo em `examples`.
    502provider_unavailableA base de processos está indisponível; nenhum crédito é cobrado — tente novamente em instantes.

    Pronto para integrar?

    Chave de teste sem custo para validar a integração.

    Solicitar acesso