Vehicle Legal Case History Api
Introduction
The Vehicle Legal Case History API returns the legal footprint of an Indian vehicle against its registration number. For a single registration number you receive the court cases and police FIRs (First Information Reports) associated with the vehicle, consolidated into one list in legalCaseDetails, along with the vehicle number and a count of records. This is a live lookup. There is no caching and no stored copy — every request queries the underlying records in real time, so you always get the current state, and you should expect response times to vary with how much history a vehicle has. It is a stateless lookup: there is no request id to retain, no idempotency key, and no forceRefresh-style flag. The records come back as a mixed list, and each entry is one of two kinds told apart by its source field. Court-case records (source is order_match or party) carry case fields such as caseNumber, courtName, status and order documents. FIR records (source is fir) carry FIR fields such as firNo, policeStation and the FIR document. A given record only contains the fields for its own kind; the other kind's fields are absent. A registration number that is well formed but has no records at all returns 404, not an empty list. A few conventions carry across every call. All dates are strings in YYYY/MM/DD format (the FIR registration date may additionally carry a HH:MM:SS time). Supporting documents — court orders and FIR PDFs — are returned as temporary Signzy-hosted download links valid for about 20 days; a document that could not be prepared is returned as an empty string ("") rather than a broken or third-party link. Any field with no value is returned as an empty string or empty array.
How to call the API
You are required to pass your API key in the Authorization header and set Content-Type to application/json. The API accepts POST requests only. A successful lookup returns HTTP 200 with the payload wrapped in a result object.
{
"result": { }
}Any failure returns the payload wrapped in an error object carrying a machine-readable reason and a human-readable message. Branch your handling on reason, not on message, as message text may be refined over time.
{
"error": {
"name": "error",
"message": "No legal case found for the given vehicle number",
"status": 404,
"reason": "NOT_FOUND",
"type": "Not Found",
"statusCode": 404
}
}Authentication failures return HTTP 401 before the request reaches the API and are not wrapped in the error object. They carry a message field only.
API Input Guidelines
- You are required to pass the vehicle registration number in vehicleNumber. This field is mandatory and must be a string.
- The registration number is case-insensitive. mh12ab1234 and MH12AB1234 are treated identically.
- Leading and trailing whitespace is removed before the number is processed.
- Only letters and digits are permitted; separator characters and spaces inside the number cause the request to be rejected.
- The number must be a valid Indian registration number and begin with a recognised state code (for example MH, DL, KA). Bharat series numbers (those beginning with two digits, for example 22BH1234AB) are also accepted.
- TS, TG and AP numbers must include the full two-digit RTO code (for example TS08GV0187, not TS8GV0187); a stripped leading zero is rejected.
- One vehicle per request. The API does not accept arrays or batch input.
- Any additional fields in the request body are ignored.
Sample Curl
Preproduction
curl --location 'https://api-preproduction.signzy.app/api/v3/vehicle/legal-case-history' \
--header 'Content-Type: application/json' \
--header 'Authorization: <Auth Token>' \
--data '{
"vehicleNumber": "RJ13C0155"
}'Production
curl --location 'https://api.signzy.app/api/v3/vehicle/legal-case-history' \
--header 'Content-Type: application/json' \
--header 'Authorization: <Auth Token>' \
--data '{
"vehicleNumber": "RJ13C0155"
}'Input Parameters
Parameter | Description | Required |
|---|---|---|
Authorization | Your API key, passed as a header. | Yes |
Content-Type | Must be set to application/json. | Yes |
vehicleNumber | Vehicle registration number to look up. Case-insensitive; surrounding whitespace is ignored. Must be a valid Indian registration number with a recognised state code, or a Bharat series number. | Yes |
Sample Response
{
"result": {
"vehicleNumber": "MH12AB1234",
"totalResults": 2,
"legalCaseDetails": [
{
"source": "order_match",
"caseNumber": "MACP/456/2020",
"cnrNo": "MHPU030004562020",
"courtName": "District and Sessions Court, Pune",
"courtType": "District Court",
"stateName": "Maharashtra",
"caseType": "Motor Accident Claim",
"status": "DISPOSED",
"caseStage": "Disposed",
"petitioner": "Sunita Deshmukh",
"respondent": "National Insurance Co. Ltd.",
"filingDate": "2020/02/11",
"nextHearingDate": "",
"decisionDate": "2022/11/30",
"disposalDate": "2022/11/30",
"judgment": "Claim partly allowed; compensation awarded with interest.",
"orderText": [
"Order dated 30/11/2022: The petition is partly allowed and compensation is awarded.",
"Final judgment uploaded to record."
],
"orderUrls": [
"https://persist.signzy.tech/api/files/download/legal_case_order_1.pdf",
""
],
"orderCount": 2,
"acts": "Motor Vehicles Act",
"actSections": "166, 140",
"caseUrl": ""
},
{
"source": "fir",
"firId": "MH-2022-000229",
"firNo": "229/2022",
"firDate": "2022/10/24",
"firYear": "2022",
"policeStation": "Borgaon",
"firRegDate": "2022/10/24 15:29:22",
"firRegNumber": "229",
"firState": "Maharashtra",
"firDistrict": "Satara",
"firStatus": "",
"firBrief": "Vehicle reported stolen from the complainant's residence on the night of 24/10/2022.",
"firUrl": "https://persist.signzy.tech/api/files/download/legal_case_fir.pdf",
"highlightText": "MH12AB1234"
}
]
}
}Response Parameters
PARAMETER NAME | REQUIRED/OPTIONAL | DATA TYPE | DESCRIPTION |
|---|---|---|---|
result | Required | Object | Container for a successful lookup result. Present on every successful response. |
result.vehicleNumber | Required | String | The registration number the result is for, echoed back in uppercase. |
result.totalResults | Required | Number | Count of legal records reported for the vehicle. |
result.legalCaseDetails | Required | Array of Object | The legal records found for the vehicle. Each element is either a court-case record or an FIR record, told apart by the source field. A vehicle with no records yields a 404 rather than an empty array. |
result.legalCaseDetails[].source | Required | String | Record type / match origin. One of: order_match, party (court-case records), fir (FIR records). |
result.legalCaseDetails[].caseNumber | Optional | String | Court case number. Present on court-case records only. |
result.legalCaseDetails[].cnrNo | Optional | String | Case Number Record (CNR), a 16-character alphanumeric code. Separators are removed and letters upper-cased. Court-case records only. |
result.legalCaseDetails[].courtName | Optional | String | Name of the court. Court-case records only. |
result.legalCaseDetails[].courtType | Optional | String | Type or level of the court. Court-case records only. |
result.legalCaseDetails[].stateName | Optional | String | State of the court, in Title Case. Court-case records only. |
result.legalCaseDetails[].caseType | Optional | String | Nature of the case, for example Criminal Case or Motor Accident Claim. Court-case records only. |
result.legalCaseDetails[].status | Optional | String | Case status, upper-cased. One of: DISPOSED, PENDING. Court-case records only. |
result.legalCaseDetails[].caseStage | Optional | String | Current stage of the case (free text). Court-case records only. |
result.legalCaseDetails[].petitioner | Optional | String | Petitioner / complainant name(s). Court-case records only. |
result.legalCaseDetails[].respondent | Optional | String | Respondent / accused name(s). Court-case records only. |
result.legalCaseDetails[].filingDate | Optional | String | Date the case was filed, in YYYY/MM/DD format. Court-case records only. |
result.legalCaseDetails[].nextHearingDate | Optional | String | Next hearing date, in YYYY/MM/DD format. Court-case records only. |
result.legalCaseDetails[].decisionDate | Optional | String | Decision date, in YYYY/MM/DD format. Court-case records only. |
result.legalCaseDetails[].disposalDate | Optional | String | Disposal date, in YYYY/MM/DD format. Court-case records only. |
result.legalCaseDetails[].judgment | Optional | String | Summary of the judgment. Court-case records only. |
result.legalCaseDetails[].orderText | Optional | Array of String | Court order texts, one entry per order. Court-case records only. |
result.legalCaseDetails[].orderUrls | Optional | Array of String | Signzy-hosted PDF download links for the orders, index-aligned with orderText. An entry is "" when that PDF could not be prepared. Links are valid for about 20 days. Court-case records only. |
result.legalCaseDetails[].orderCount | Optional | Number | Number of orders. May be returned as "" (empty string) when the source does not report a count. Court-case records only. |
result.legalCaseDetails[].acts | Optional | String | Acts invoked in the case. Court-case records only. |
result.legalCaseDetails[].actSections | Optional | String | Sections invoked in the case. Court-case records only. |
result.legalCaseDetails[].caseUrl | Optional | String | Reserved field; always returned as "". Court-case records only. |
result.legalCaseDetails[].firId | Optional | String | FIR identifier. Present on FIR records only. |
result.legalCaseDetails[].firNo | Optional | String | FIR number. FIR records only. |
result.legalCaseDetails[].firDate | Optional | String | FIR date, in YYYY/MM/DD format. Often ""; for some records the date appears only within firBrief. FIR records only. |
result.legalCaseDetails[].firYear | Optional | String | FIR year. FIR records only. |
result.legalCaseDetails[].policeStation | Optional | String | Police station that registered the FIR. FIR records only. |
result.legalCaseDetails[].firRegDate | Optional | String | FIR registration date, in YYYY/MM/DD format, optionally followed by a HH:MM:SS time. FIR records only. |
result.legalCaseDetails[].firRegNumber | Optional | String | FIR registration number. FIR records only. |
result.legalCaseDetails[].firState | Optional | String | State, in Title Case. FIR records only. |
result.legalCaseDetails[].firDistrict | Optional | String | District. FIR records only. |
result.legalCaseDetails[].firStatus | Optional | String | FIR status; usually "". FIR records only. |
result.legalCaseDetails[].firBrief | Optional | String | Free-text description of the FIR. FIR records only. |
result.legalCaseDetails[].firUrl | Optional | String | Signzy-hosted PDF download link for the FIR, or "" if unavailable. Valid for about 20 days. FIR records only. |
result.legalCaseDetails[].highlightText | Optional | String | Snippet of matched text indicating why the record matched the vehicle. FIR records only. |
A field returned as an empty string ("") or empty array ([]) means the value was not available for that record. Fields marked "court-case records only" or "FIR records only" are present only on records of that type, as determined by source.
Status Codes
CODE | REASON | MESSAGE |
|---|---|---|
400 | VALIDATION_ERROR | Vehicle Number is required |
400 | VALIDATION_ERROR | Vehicle Number can not be empty |
400 | VALIDATION_ERROR | Vehicle Number should be a string |
400 | BAD_REQUEST | Vehicle Number is not valid |
401 | — | No API key found in request |
401 | — | Invalid authentication credentials |
404 | NOT_FOUND | No legal case found for the given vehicle number |
409 | UPSTREAM_ERROR | Error in getting data from upstream |
A 400 is raised before any lookup is performed — VALIDATION_ERROR covers presence and type checks on the field, and BAD_REQUEST covers the format and state-code check. A 404 means the registration number was well formed but has no court cases or FIRs on record. A 409 means the record could not be retrieved — the source was unreachable or returned an unexpected response (also returned as Error in fetching data from upstream); the request itself was valid and may succeed on a later attempt. |
API Coverage
The Vehicle Legal Case History API provides coverage across multiple Indian states and union territories for First Information Reports (FIRs), along with litigation records from various courts, tribunals, and quasi-judicial authorities.
1. FIR Coverage
The following table lists the states and jurisdictions covered for FIR records, along with the available data period.
S. No. | State / Jurisdiction | Available Years |
|---|---|---|
1 | CBI | 2017–2026 |
2 | Uttar Pradesh | 2017–2026 |
3 | Kerala | 2017–2026 |
4 | Gujarat | 2017–2026 |
5 | Tamil Nadu | 2017–2026 |
6 | Andhra Pradesh | 2016–2026 |
7 | Manipur | 2008–2026 |
8 | Madhya Pradesh | 2026 |
9 | Karnataka | 2016–2026 |
10 | Haryana | 2001–2026 |
11 | Uttarakhand | 2015–2026 |
12 | Goa | 2017–2026 |
13 | Odisha | 2007–2026 |
14 | West Bengal | 2016–2026 |
15 | Maharashtra | 2017–2026 |
16 | Rajasthan | 2020–2026 |
17 | Puducherry | 2016–2026 |
18 | Andaman & Nicobar | 2003–2026 |
19 | Chandigarh | 2013–2026 |
20 | Bihar | 2005–2026 |
21 | Punjab | 2024–2026 |
22 | Chhattisgarh | 2024–2026 |
23 | Delhi | 2014–2026 |
24 | Meghalaya | 2015–2026 |
25 | Telangana | 2017–2026 |
2. Litigation Coverage
The API provides litigation coverage across the following courts, tribunals, and adjudicatory authorities, subject to the availability of public records.
- Supreme Court of India
- All High Courts
- District and Sessions Courts
- Civil and Criminal Courts
- Commercial Courts
- Consumer Commissions
- Labour and Industrial Courts
- Family Courts
- National Company Law Tribunal (NCLT) / National Company Law Appellate Tribunal (NCLAT)
- Debt Recovery Tribunal (DRT) / Debt Recovery Appellate Tribunal (DRAT)
- RERA Authorities and Appellate Tribunals
- Tax, SEBI, SAT, and other statutory tribunals and quasi-judicial forums
- Other notified tribunals and adjudicatory authorities where public records are available
3. Coverage Notes
- FIR coverage varies by state and the availability of historical records.
- The years mentioned indicate the available data period and do not guarantee records for every year or jurisdiction.
- Litigation coverage includes multiple levels of courts and tribunals across India.
- Actual results depend on the availability and accessibility of records in the underlying sources.
- A valid vehicle registration number may return no records even if its state or jurisdiction is covered.
Getting help
Please feel free to contact us if you have any questions, require clarification, or have ideas for how to make the documents or any of our services better. You can reach out to us at [email protected].