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.
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 ↗/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.
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.
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
Positiva, Negativa ou Indeterminado no recorte recebido.
Processos desta página, com número, situação e instância quando confirmados.
Limites e paginação; não representa total histórico.
Página efetivamente consultada.
Total de páginas anunciado pela origem para este recorte.
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.