Skip to main content
TrackJud TrackJud

Developers

Integrate Brazilian court data in minutes

Standardized REST API on OpenAPI 3.1. Bearer token auth, structured JSON responses, 12 judicial sources covered. From your first 10 CPFs up to 100k/month — no monthly fee, no minimum.

Built for production

<2s

Average latency

Cache-hit on ~90% of queries

99.5%

Contractual uptime

Enterprise SLA available

OpenAPI 3.1

Standardized contract

Scalar docs at /api/docs

R$ 0.10

Per court

Credits never expire

Quickstart in 3 steps

From new account to first call in under 5 minutes.

1

Create an account

Free email sign-up at vigilant.trackjud.com.br. 5 credits on the spot, no credit card required.

2

Generate an API key

In the dashboard, create a Bearer token key in one click. Copy and send it as Authorization: Bearer <token> on your calls.

3

Call the API

A POST /api/v1/consults with the CPF + list of courts returns a consult_id. GET /api/v1/consults/{id} delivers the processed data.

Code samples

Consult request in 4 languages — pick a tab.

curl -X POST https://vigilant.trackjud.com.br/api/v1/consults \
  -H "Authorization: Bearer $VIGILANT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "document": "529.982.247-25",
    "courts": ["TJSP", "TJRJ", "TJMG"],
    "force_refresh": false
  }'
import os
import requests

API_KEY = os.environ["VIGILANT_API_KEY"]

response = requests.post(
    "https://vigilant.trackjud.com.br/api/v1/consults",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "document": "529.982.247-25",
        "courts": ["TJSP", "TJRJ", "TJMG"],
        "force_refresh": False,
    },
    timeout=30,
)
response.raise_for_status()
print(response.json())
const apiKey = process.env.VIGILANT_API_KEY;

const response = await fetch("https://vigilant.trackjud.com.br/api/v1/consults", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    document: "529.982.247-25",
    courts: ["TJSP", "TJRJ", "TJMG"],
    force_refresh: false,
  }),
});

if (!response.ok) throw new Error(`vigilant: ${response.status}`);
const data = await response.json();
console.log(data);
package main

import (
  "bytes"
  "encoding/json"
  "fmt"
  "net/http"
  "os"
)

func main() {
  body, _ := json.Marshal(map[string]interface{}{
    "document":      "529.982.247-25",
    "courts":        []string{"TJSP", "TJRJ", "TJMG"},
    "force_refresh": false,
  })

  req, _ := http.NewRequest("POST",
    "https://vigilant.trackjud.com.br/api/v1/consults",
    bytes.NewBuffer(body))
  req.Header.Set("Authorization", "Bearer "+os.Getenv("VIGILANT_API_KEY"))
  req.Header.Set("Content-Type", "application/json")

  resp, err := http.DefaultClient.Do(req)
  if err != nil {
    panic(err)
  }
  defer resp.Body.Close()
  fmt.Println(resp.Status)
}

Response shape

Structured JSON with cases, parties, movements, and subjects. A single payload for any court we cover.

{
  "data": {
    "id": "a3f9c1e2-48b1-4c73-9f0e-6d8b2e5a7c11",
    "document": "529.982.247-25",
    "status": "done",
    "inserted_at": "2026-04-15T10:00:00Z",
    "courts": [
      {
        "court": "TJSP",
        "system": "esaj",
        "status": "completed",
        "started_at": "2026-04-15T10:00:05Z",
        "finished_at": "2026-04-15T10:00:35Z",
        "processes": [
          {
            "numero_processo_unico": "1234567-89.2024.8.26.0100",
            "classe": "Procedimento Comum Civel",
            "situacao": "Em andamento",
            "distribuido_em": "15/01/2024",
            "valor_causa": "R$ 50.000,00",
            "partes": [
              { "tipo": "Autor", "nome": "Joao da Silva" },
              { "tipo": "Reu", "nome": "Empresa XYZ Ltda" }
            ],
            "movimentos": [
              { "data_movimento": "01/03/2024", "descricao": "Juntada de Peticao" }
            ],
            "assuntos": [
              { "cod_assunto": 7619, "ds_assunto": "Indenizacao por Dano Moral" }
            ]
          }
        ]
      }
    ]
  }
}

Integration patterns

How real companies fit Vigilant into the pipeline.

Bureau complement

Parallel call to Serasa / Boa Vista during credit onboarding. Litigation signals come in as additional features in your score.

KYC / EDD

Counterparty verification in the KYC flow. Auditable log per query, exportable to the regulator.

Checkout anti-fraud

Parallel call to ClearSale / Konduto in the B2C checkout. The threshold lives in your engine — Vigilant decides nothing.

Bulk due diligence

Upload CPFs/CNPJs (target + shareholders + controllers) for the M&A red flags memo. JSON/CSV response for your team to build the report.

Labor audits

Periodic re-query of your supplier base via cron. Your workflow ranks and alerts — Vigilant delivers the updated data.

Continuous monitoring

2-day cache + async refresh. You call when you need; if it changed, we return new data; if not, cache.

Rate limits, cache and pricing

  • Prepaid credits — 1 credit = 1 court queried
  • R$ 0.10 per credit, no monthly fee, no minimum
  • 2-day cache: a repeat query on the same CPF+court is served from cache at no extra cost
  • Async refresh for stale data — we respond immediately with stale and schedule the update
  • Enterprise: dedicated rate limit, 99.5% SLA, regional endpoint, 24x7 support

Frequently asked questions

Is there a sandbox environment?

A new account gets 5 free credits that act as a sandbox — same production URL, same API key, just with a test balance. No separate environment, no friction.

How does the rate limit work?

Free accounts get a per-API-key rate limit sufficient for development and integration. Enterprise contracts negotiate dedicated rate limits and bursting. 429 responses always include Retry-After.

What is the error format?

All error responses follow RFC 7807 (Problem Details) with Content-Type application/problem+json. Fields: type, title, status, detail, instance. Validation errors include an errors field with per-field detail.

Do you push new-case webhooks?

Not out of the box. For monitoring, the pattern is to re-query on your own scheduler (daily/weekly cron), diff against the last response, and fire your internal alert when a new case shows up. Enterprise contracts can negotiate custom webhooks.

Does the API return real-time data or cached?

Fresh cache (< 2 days) returns HTTP 200 immediately. Stale cache (>= 2 days) returns 200 with stale:true + an async refresh in the background. No cache → 202 with consult_id to poll.

LGPD: what is the legal basis?

Court data comes from public tribunal sources. The legal basis varies by use case (legitimate interest, compliance with legal obligation, credit protection). We keep an audit trail per request — the docs have the full section.

Ready to integrate?

5 free credits on sign-up, no credit card. OpenAPI 3.1 documentation at vigilant.trackjud.com.br/api/docs. For enterprise volumes, talk to sales.