🤖 Base endpoint:https://crawler.production.judit.io/credentials. Register once per system/court and reference it later in queries viacredential.customer_key.
When to use
Access to secret lawsuits
Required to query civil and labor lawsuits under judicial secrecy.
Multi-tenant for firms
Use
customer_key to separate credentials per lawyer/client of the firm.LGPD/GDPR compliance
Passwords are stored encrypted in a dedicated vault — your application never transits the password.
Wildcard credential
Register
"system_name": "*" as fallback for courts without a specific credential.A1 digital certificate
Courts that only accept certificate login use the
POST /credentials/certificate route.Endpoint to register your keys in the credentials vault
To start using the credentials vault, you must make a POST request to thecrawler.production.judit.io/credentials route and register the lawyers’ credentials for the courts made available.
Request Payload
The POST request must include a payload with the following properties:-
system_name: The acronym of the court and system for which the new credential will be registered.Note:A wildcard credential can be registered using"system_name": "*". If a credential is registered under the wildcard, all courts without their own specific credential will use the wildcard credential.
-
customer_key: Custom identifier to associate the credential with a client or lawyer. It can be any name or label defined by whoever is registering the credential, making it easier to organize and manage credentials. -
username: CPF (Cadastro de Pessoas Físicas — Brazilian individual taxpayer ID) or OAB number (Ordem dos Advogados do Brasil — Brazilian Bar Association), as required by the court’s system where the login will be performed. -
password: Password registered at the respective court.
-
custom_data: Optional object intended to store additional information specific to the system or use-case context. It may include custom fields such as a secret required for authentication or other specific settings. -
secret: Two-factor authentication token for the system being registered.
Note: Registered credentials are encrypted, ensuring data security, and cannot be retrieved afterwards. To modify information already registered, simply create a new record using the same customer_key and the same system_name. The new registration will automatically replace the existing credential.
Example payload for registering credentials without two-factor authentication:
Registering a credential with a digital certificate (A1)
Some courts do not accept CPF/OAB + password login and require a digital certificate. For those cases, the Credentials Vault has a dedicated route for certificate upload:POST /credentials/certificate.
What you need before you start
If you have an A3 certificate and need to use it in automated queries, you must issue an A1 certificate for the same holder. Contact your Certification Authority (Serasa, Certisign, Soluti, etc.).
Step 1 — Convert the .pfx file to Base64
An HTTP request body in JSON only carries text, and a .pfx is a binary file. So, before sending it, the file must be converted to Base64 — which is simply the same file rewritten as text.
Base64 is not encryption and not a hash. It is only a way to represent the file using text characters. Nothing is lost and nothing is scrambled in the conversion.
MII. If what you copied is something short like C:\certificates\mine.pfx or ./certificate.pfx, you copied the file path, not its content.
Step 2 — Send the certificate to the vault
Request body fields
The
customer_key is just a reference label chosen by you. It has no relation to the court and it is not a password.Step by step in Postman
1
Method and URL
Select POST and enter the URL
https://crawler.prod.judit.io/credentials/certificate.2
Headers
On the Headers tab, add two rows:
3
Body
On the Body tab, select raw and, in the selector on the right, choose JSON. Paste the JSON with the four fields and replace
file_base64 with the text generated in Step 1.4
Send
Click Send. The expected response is a
200 with the CERTIFICATE_CREATED message.Step 3 — Check the response
The certificate is validated at upload time (password, validity and size) and stored encrypted. The response never returns the file or the password — once registered, the certificate cannot be read back.
Step 4 — Use the certificate in a query
Usage is the same as any other vault credential: just send the samecustomer_key in search.search_params.credential.
If you registered the certificate with the default
customer_key "*", you do not need to send credential in the query — it will be used automatically as the wildcard credential.Step 5 (optional) — Certificate + 2FA code
Some courts require two things at once: the digital certificate and the 2FA secret — sent in thesecret field, and called secret key, manual key or authenticator setup key on the court portal.
It is all done in a single request: just add the custom_data object, with the secret key inside it, to the same certificate payload.
Not sure where to find that key? It appears during the 2FA setup on the court portal, behind options such as “I can’t scan the QR Code”, “Enter key manually”, “Show secret key” or “Setup key”.
If the credential already had a
secret registered before, uploading the certificate does not erase it. You can send custom_data again to update it, or omit the field to keep what is already stored.Replacing, renewing or removing the certificate
- Renew or replace: repeat the same upload with the same
customer_keyandsystem_name. The credential is updated, the previous certificate is discarded and the response comes back withCERTIFICATE_UPDATED. - Different holder: if the new certificate belongs to another CPF/CNPJ, the API returns
CERTIFICATE_HOLDER_MISMATCH(409). Remove the credential before registering the new holder’s certificate. - List: use
GET https://crawler.prod.judit.io/credentials?customer_key=testewith theapi-keyheader. A credential registered withsystem_name: "*"appears in the list withname: "*". - Remove: use
DELETE https://crawler.prod.judit.io/credentialssendingsystem_nameandcustomer_key. The stored certificate is deleted along with the credential. If it does not exist, the response is404(CREDENTIAL_NOT_FOUND).
Errors and how to fix them
Most common mistakes in practice
I sent the file path instead of its content
I sent the file path instead of its content
"file_base64": "C:\\certificates\\mine.pfx" is wrong. The field expects the Base64 text generated in Step 1, with thousands of characters — not the file location on your computer.The Base64 came out split across several lines
The Base64 came out split across several lines
This happens when the command runs without
tr -d '\n' (macOS) or without -w 0 (Linux). Redo the conversion using exactly the commands from Step 1.I used the court password in the password field
I used the court password in the password field
The
password field is the .pfx file password, created when the certificate was issued or exported. The court portal password does not open the file and results in PFX_PASSWORD_INVALID.I tried to attach the .pfx as a file in Postman
I tried to attach the .pfx as a file in Postman
The route only accepts
Content-Type: application/json with the file already converted to Base64. Do not use form-data, binary or Postman’s file picker.My certificate is A3 (token or smart card)
My certificate is A3 (token or smart card)
A3 certificates require the physical device connected at login time and therefore cannot be registered in the vault. You need an A1 certificate (
.pfx / .p12 file) for the same holder.I registered the certificate but the query still does not return the secret lawsuit
I registered the certificate but the query still does not return the secret lawsuit
The certificate only authenticates the holder. Access to the lawsuit depends on that holder’s permissions inside the court. If the lawyer is not enabled in the lawsuit, the response will remain limited to public data.
Endpoint to verify registered credentials
To check whether a credential is registered, send a GET request to thecrawler.production.judit.io/credentials endpoint, including the customer_key parameter that corresponds to the credential you want to look up.
The response will return every credential available in the vault associated with the queried customer_key. The credential_status field indicates the status of each credential:
- active: Credential registered and active.
- not exists: Credential not found in the system.
Endpoint to delete a key from the Credentials Vault
To delete a system from the credentials vault, you must make a DELETE request to thecrawler.production.judit.io/credentials route.
Request Payload
The DELETE request must include a payload with the following properties:system_name: The acronym of the court and system whose credential will be removed.customer_key: Custom identifier added when the credential was registered.
- If the request succeeds, the response will be an empty object.