Fluxo Básico

A Judit API funciona com um padrão assíncrono:
  1. Criar requisição (POST /requests) - Inicia a consulta
  2. Aguardar processamento (GET /requests) - A API busca os dados nos tribunais
  3. Consultar resultado (GET /responses) - Obtém os dados processados

Pré-requisitos

Exemplo Completo

1. Configurar Variáveis de Ambiente

export JUDIT_API_KEY="sua-api-key-aqui"
export JUDIT_BASE_URL="https://requests.prod.judit.io"

2. Criar uma Requisição

curl -X POST "$JUDIT_BASE_URL/requests" \
  -H "api-key: $JUDIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "search": {
      "search_type": "cpf",
      "search_key": "999.999.999-99",
      "response_type": "lawsuit",
      "cache_ttl_in_days": 7
    }
  }'

3. Verificar Status da Requisição

curl -X GET "$JUDIT_BASE_URL/requests/$REQUEST_ID" \
  -H "api-key: $JUDIT_API_KEY"

4. Obter Resultados

Quando o status for completed, consulte os resultados:
curl -X GET "$JUDIT_BASE_URL/responses?page=1" \
  -H "api-key: $JUDIT_API_KEY"

Tipos de Consulta Disponíveis

{
  "search": {
    "search_type": "cpf",
    "search_key": "999.999.999-99",
    "response_type": "lawsuit"
  }
}

Tipos de Resposta

  • lawsuit: Dados completos do processo
  • parties: Apenas informações das partes
  • attachments: Lista de anexos disponíveis
  • step: Movimentações processuais
  • lawsuits: Múltiplos processos (para consultas amplas)

Filtros Avançados

Para consultas mais específicas por documento, é possivel utilizar filtros:
{
  "search": {
    "search_type": "cpf",
    "search_key": "999.999.999-99",
    "response_type": "lawsuit",
    "search_params": {
      "filter": {
        "side": "autor",
        "amount_gte": 10000,
        "distribution_date_gte": "2023-01-01",
        "tribunals": {
          "keys": ["TJSP", "TJRJ"],
          "not_equal": false
        }
      }
    }
  }
}

Boas Práticas

1. Use Cache Inteligente

Configure cache_ttl_in_days para evitar consultas desnecessárias:
{
  "cache_ttl_in_days": 7  // Usar cache por até 7 dias
}

2. Implemente Retry com Backoff

import time
import random

def retry_with_backoff(func, max_retries=3):
    for attempt in range(max_retries):
        try:
            return func()
        except Exception as e:
            if attempt == max_retries - 1:
                raise e
            wait_time = (2 ** attempt) + random.uniform(0, 1)
            time.sleep(wait_time)

3. Monitore Rate Limits

response = requests.get(url, headers=headers)

# Verificar headers de rate limit
remaining = response.headers.get('X-RateLimit-Remaining')
reset_time = response.headers.get('X-RateLimit-Reset')

if int(remaining) < 10:
    print("Próximo do limite de rate limit!")

Próximos Passos

Dica: Para desenvolvimento, use o Postman Collection com exemplos prontos da Judit API.