Skip to main content
New CNPJ format (IN 2229/24)Judit already accepts the new alphanumeric CNPJ format in compliance with the Brazilian Federal Revenue Normative Instruction No. 2229/2024.
  • Zero effort: no changes are required in your integration.
  • Test environment: use the document A1B2C3D4/E5F6-68 to validate the flow and receive a mock lawsuit in response.
The Hot Storage Synchronous Query returns, in milliseconds, every lawsuit in our datalake linked to a CPF, CNPJ, OAB, Name or CNJ. There is no queue or wait for the court: the response comes straight from Judit’s cache.
🤖 Endpoint: POST https://lawsuits.production.judit.io/lawsuits. The response is synchronous (HTTP 200 with the full JSON). This route does not query the court — it reads Judit’s datalake, so there may be a small lag versus the most current state of the lawsuit. If you need real-time data, use POST /requests (async).
Searching by lawsuit number (CNJ)?This route is recommended for discovery by CPF, CNPJ, OAB or Name. For queries by lawsuit number (CNJ), the datalake data may be stale — or the lawsuit may not even exist in our base yet. Use the On-Demand Query to get a real-time freshness guarantee at the court without leaving the synchronous flow.

Synchronous vs. asynchronous — which one?

When to use

Real-time validation

Onboarding, KYC, autocomplete — whenever you need an immediate response for the UI.

Interactive dashboards

Dashboards and BI listing lawsuits linked to a customer without forcing a court refresh.

Risk pre-filtering

Before firing an expensive async query, find out quickly whether it’s worth it.

Counts and aggregates

Combine with /lawsuits/count and /lawsuits/synthetic for analytics.
All synchronous queries accept filters (court, claim amount, classes, parties, dates, phase). See the full list at historical-query filters — the same search_params.filter object applies here.

Step 1: Create the synchronous query (POST)

To start the synchronous query, make a POST request with the desired document. POST https://lawsuits.production.judit.io/lawsuits

Synchronous query examples

For name queries homonyms are possible. Whenever feasible, prefer CPF, CNPJ or OAB for accuracy.

Payload parameters

Party inference (search_params.with_inferred_parties)

Many courts do not publish the parties’ CPF/CNPJ — only their names. With with_inferred_parties: true, the query also considers lawsuits in which the link to the searched document was inferred through Judit’s internal validations, instead of being read directly from the court. The parameter is opt-in: when omitted it defaults to false.
Query with party inference
Every party in the response carries the was_inferred field: false when the document was published by the court itself and true when it was inferred by Judit (in that case the documents array usually comes empty and main_document is the result of the inference). Treat the absence of the field as false — the historical query has a response example with an inferred party.
Risk of homonyms. Because the inference starts from the party’s name, there is a chance of linking to the searched document a lawsuit that actually belongs to another person or company with an identical or very similar name. The internal validations reduce this risk, but do not eliminate it. In searches with search_type: "name", this risk adds up to the homonyms of the searched term itself.Use was_inferred to decide how to treat each lawsuit: an inferred link does not carry the same reliability as a document published by the court.

Most common filters (search_params.filter)

The synchronous query accepts the same filters as the historical query. Practical examples:
Full list of accepted courts: see Historical-query filters.

Request example (POST)

Step 2: Read the response

The response comes in the body of the same POST (no polling). Main fields:

Full response example

The response will be a JSON object with the data:
Full structure of each response_data item: see Lawsuit Schema.

Common errors

Next steps