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-68to validate the flow and receive a mock lawsuit in response.
🤖 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, usePOST /requests(async).
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.Step 1: Create the synchronous query (POST)
To start the synchronous query, make aPOST request with the desired document.
POST https://lawsuits.production.judit.io/lawsuits
Synchronous query examples
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
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.
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
See response example
See 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
- To query a specific lawsuit by CNJ with a freshness guarantee: On-Demand Query.
- For listing and filtering with depth (advanced filters, side, classes): Historical Query by document.
- For aggregation (counts by court/area/phase): Grouped Query.
- To force real-time read at the court: Asynchronous Query.