Confira o preço antes de iniciar a pesquisa. Envie POST /v1/orcamento/processos-tjgo com os dados que deseja pesquisar. O orçamento informa o valor e a disponibilidade, sem cobrar.

Documentação

Tribunal de Justiça do Estado de Goiás (TJGO)

Processos judiciais — TJGO

Processos públicos por CPF/CNPJ no Projudi TJGO, com busca padrão ou arquivados.

Site oficial da fonte ↗
Beta
POST /v1/consultas/processos-tjgo v1

Tempo típico

não medido

Preço

R$ 0,30

por consulta

Visão geral

Uma página por consulta, nos graus declarados pelas fichas públicas.

Envie status_processo=arquivado para o recorte explícito; omitir usa a busca padrão. Os recortes podem se sobrepor.

Não é certidão e não garante todo o acervo. Sigilo, acervos físicos e SEEU não estão cobertos.

Antes de começar

Cobrança, idempotência e leitura do resultado. Leia antes da primeira chamada.

Contexto 1

Cobertura e cobrança

Cada POST inicia uma consulta nova e retorna protocolo; acompanhamento usa GET. Exige conta liberada, escopo e saldo.

Uma página por chamada. Não há varredura automática de todas as páginas nesta API; orçamento e execução usam o mesmo critério.

Esta versão aceita CPF/CNPJ. OAB e número são consultas disponíveis na tela/admin, fora deste contrato de API.

Requisição

Autentique com token no cabeçalho. Parâmetro obrigatório ausente é recusado com 422, antes de qualquer cobrança.

cpf_cnpj string obrigatório

Documento completo e válido da parte.

pagina integer opcional

Página1–40; padrão1. Cada página é uma consulta cobrada.

status_processo string opcional

arquivado para o recorte explícito; omita para padrão. Situação individual vem da ficha atual.

finalidade string opcional

Motivo da consulta, em texto livre. Obrigatória (mínimo 10 caracteres) quando cpf_cnpj é um CPF que ainda não está no seu cadastro; sem ela a chamada é recusada com 422, sem cobrança. Para CNPJ, e para CPF já cadastrado, é opcional.

Nova consulta e acompanhamento

Envie apenas o token e os dados. Cada POST inicia uma nova consulta, mesmo com dados iguais, com protocolo e cobrança próprios.

Use os exemplos no backend. Guarde o protocolo recebido e acompanhe por GET. Se a resposta do POST se perder, confira o histórico antes de reenviar: outro POST é outro pedido.

// Execute somente no backend (Node.js 22+). Configure o token no servidor.
// const pedido = await consultarOficialData(process.env.OFICIALDATA_TOKEN, dados);
// Guarde pedido.protocolo. Depois use acompanharOficialData(token, pedido.protocolo).
// Cada POST inicia uma nova consulta, mesmo com dados iguais.
// Resposta perdida: confira o histórico antes de reenviar; outro POST é outro pedido.

export async function consultarOficialData(token, dados = {"cpf_cnpj":"00000000000191","status_processo":"arquivado","pagina":1}) {
  const corpo = await enviar(token, "https://api.oficialdata.com.br/v1/consultas/processos-tjgo", dados);
  const protocolo = corpo.data?.[0]?.protocolo;
  if (corpo.code !== 202 || !protocolo) throw new Error(JSON.stringify(corpo));
  return { protocolo: String(protocolo), resposta: corpo };
}

export async function acompanharOficialData(token, protocolo) {
  if (!/^\d+$/.test(String(protocolo))) throw new Error('Informe o protocolo recebido.');
  const corpo = await enviar(token, "https://api.oficialdata.com.br" + '/v1/consultas/' + encodeURIComponent(protocolo));
  // code 202: aguarde intervalo_consulta_segundos e consulte novamente por GET.
  // code 200/6xx: confira o resultado. Não repita o POST para acompanhar.
  return { protocolo: String(protocolo), resposta: corpo };
}

async function enviar(token, url, dados) {
  if (!token) throw new Error('Informe o token de acesso.');
  const post = dados !== undefined;
  const resposta = await fetch(url, {
    method: post ? 'POST' : 'GET',
    headers: {
      Authorization: 'Bearer ' + token, Accept: 'application/json',
      ...(post && { 'Content-Type': 'application/json' }),
    },
    ...(post && { body: JSON.stringify(dados) }),
    signal: AbortSignal.timeout(30000),
  });
  const corpo = await resposta.json();
  // Não repita POST automaticamente após timeout: o pedido pode ter sido aceito.
  if (!resposta.ok) throw new Error('HTTP ' + resposta.status + ': ' + JSON.stringify(corpo));
  return corpo;
}

A consulta aceita responde HTTP 202 com protocolo. Acompanhe até a conclusão e confira o campo code do resultado.

Resposta

Dentro de data[]: 6 campos em 1 blocos.

6

Campo que a origem não informou volta null — nunca 0 nem string vazia. Trate null como dado ausente, não como zero.

data[] object
6 campos
status string

Positiva, Negativa ou Indeterminado no recorte recebido.

registros array

Processos desta página, com número, situação e instância quando confirmados.

mensagem string

Limites e paginação; não representa total histórico.

pagina_atual integer

Página efetivamente consultada.

total_paginas integer

Total de páginas anunciado pela origem para este recorte.

tem_mais_paginas boolean

Existem páginas adicionais; cada consulta deve ser solicitada separadamente.

Códigos de erro

O mesmo mapa que o motor usa em produção. Leia as colunas Estorna e Retenta antes de integrar: nem toda falha devolve o dinheiro.

Classe Códigos Significa Estorna Retenta
sucesso 200 A origem respondeu e entregou. — —
nao_encontrado 612 A origem respondeu: nada consta para este alvo. Não Não
indeterminado 611 A origem não conseguiu emitir pela internet. Não é irregularidade. Não Não
erro_participante 608 619 620 A origem recusou os DADOS do pedido. Não Sim
retry 600 605 609 610 613 614 615 618 Instabilidade momentânea da origem ou do transporte. Sim Sim
fatal 601 602 603 604 606 607 617 621 622 Defeito de integração — nosso, não seu. Sim Não

Estorno: erro_participante é a única classe que não devolve o dinheiro — nela a origem respondeu recusando os dados do pedido. Corrija o alvo antes de repetir. fatal é falha nossa e sempre estorna.

Permanentes: não retente 602 e 603. A fonte sai do ar na hora e a nossa equipe é avisada.

Preço

Preço por página consultada. Confira o orçamento em POST /v1/orcamento/processos-tjgo antes de disparar em lote.

R$ 0,30

por página

Este é o preço da sua conta pelo canal API. Acordos vigentes prevalecem.

Como interpretar o orçamento

Motivo do preço, piso mínimo e situação da cota.

Leia data[0].preco.total para saber o valor previsto da consulta. header.price é zero porque orçar não cobra. preco.motivo é um slug estável para sua integração; preco.justificativa é o texto para exibir ao usuário e pode evoluir.

coberto_pela_cota
A cota cobre a consulta, sem débito de saldo. A execução consumirá as unidades previstas.
fonte_gratuita
A regra de preço aplicada considera a fonte gratuita. Confira se o piso do canal permanece cobrado.
cortesia
Aplica-se uma cortesia comercial. Ela pode continuar sujeita ao piso mínimo da API.
cobranca_avulsa
Aplica-se o preço avulso da consulta no canal API.
preco_negociado
Aplica-se uma condição negociada para a conta.
preco_ao_custo
Aplica-se a condição de preço ao custo da conta, com o piso do canal quando indicado.
somente_emolumentos
A cota cobre o serviço; permanece o emolumento do cartório.
taxa_na_cota
A cota cobre o pedido com a taxa reduzida do plano; soma-se o emolumento do cartório.
taxa_do_plano
Aplica-se a taxa de cartório do plano, com a execução por nossa conta; soma-se o emolumento. O pedido não consome cota.
taxa_integrador
Aplica-se a taxa de cartório do plano Integrador; soma-se o emolumento do cartório.
emolumentos_e_servico
O valor inclui emolumentos do cartório e a cobrança pelo serviço.

Quando preco.piso_minimo_aplicado é true, o mínimo da API permanece cobrado. Use sempre preco.total: cortesia, custo zero da origem ou plano Gratuito não garantem uma consulta a R$ 0.

cota.status informa disponivel, esgotada, insuficiente (restam unidades, mas não bastam para a operação), fonte_fora_da_cota ou plano_sem_cota. cota.restante é a quantidade livre agora; unidades_necessarias é o peso da operação e unidades_previstas é o consumo previsto na execução. Uma consulta gratuita por outra regra pode ter cota disponível e prever consumo zero.

cota.eixo identifica a franquia e cota.limite o limite do ciclo. cota.origem distingue plano de trial. cota.reservada é sempre false: o orçamento não reserva nem consome unidades. Preço, cota e disponibilidade serão revalidados ao executar.

Se disponivel for false, leia o motivo_codigo e a mensagem motivo da resposta. Nesse caso, preco.total, preco.motivo, preco.justificativa e cota vêm null. Preço desconhecido não significa gratuidade. Disponibilidade e preço também não dispensam saldo ou os demais requisitos da execução.

Limites e desempenho

Números medidos em produção. "Não medido" é falta de amostra — nenhum valor aqui é estimativa.

Tempo típico

não medido

p95

não medido

Teto por hora

—

Timeout máximo

—

De onde vem o tempo: cerca de 85% dos ~s típicos é a origem varrendo os cartórios. Dimensione o seu timeout por esse número e não conte com redução.

Sobre o volume: cada chamada consulta uma página. A vazão do TJGO ainda não foi medida; respeite a paginação e use idempotência para evitar cobranças repetidas.

Versionamento

O contrato de resposta é v1, e a versão viaja em header.api_version em toda resposta.

  • Campo novo opcional pode entrar a qualquer momento e não muda a versão. Seu parser precisa ignorar campo que não conhece.
  • Remover campo, renomear campo ou mudar tipo é versão nova, publicada em paralelo, com prazo de desligamento anunciado da anterior.
  • Nunca alteramos o significado de um campo existente mantendo o nome. Se o significado muda, o nome muda junto.

Vai integrar?

Diga o volume que você espera e em quais UFs. A ordem de liberação segue a demanda.

Falar com a gente →