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.
Create an account
Free email sign-up at vigilant.trackjud.com.br. 5 credits on the spot, no credit card required.
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.
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
Resources to integrate
API docs (Scalar)
Interactive OpenAPI 3.1 with request / response examples.
OpenAPI JSON
Full spec to generate a client in any language.
Postman collection
Pre-built collection with 6 endpoints, request/response examples and auto-captured consult_id. Import into Postman and start testing in 30 seconds.
Health check
Public endpoint for upstream monitoring.
Free tools
CPF validator, CNJ decoder, CNJ generator, and more — useful in testing.
Frequently asked questions
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.
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.
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.
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.
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.
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.