eCourt CNR Details API
GET LIVE CASE DETAILS AND STATUS USING CNR (CASE NUMBER RECORD) FROM ALL INDIA COURTS
Introduction
The CNR Case Status API enables you to instantly fetch live case details and current status from all district and taluka courts, state high courts and supreme court across India, using the unique CNR (Case Number Record). Each CNR is a 16-digit alphanumeric code assigned to every case registered in the courts under the eCourts System India.
Our API provides a seamless and automated way to retrieve real-time case information, including:
- Case registration number, filing number, filing date and case type
- Parties and counsel involved - Petitioner and respondent details
- Case stage, case history and hearing dates
- Court name, judge, and bench details
- Status of the case
- List of orders and judgements passed
- Other details like FIR Information, IA details, Objections, lower court, Transfers, Documents etc.
This product is ideal for legal tech platforms, compliance and KYC systems, banks, NBFCs, insurers, law firms, and data aggregators who need to track litigation history or verify ongoing cases at scale. With this API, businesses can eliminate manual searches, save time, and ensure accurate, up-to-date legal insight - all in a matter of seconds.
API Details
Request
| Type | URL | Current Version |
|---|---|---|
| POST | https://api.attestr.com/api/{version}/public/ecourtx/cnr/basic | v2 |
Request Body Parameters
| Type | Name | Description | Optional (default) | Min Version | Max Version |
|---|---|---|---|---|---|
| String | cnr | 16 digit alphanumeric CNR | Required | v2 |
Request Header Parameters
| Type | Name | Value / Description | Optional | Min Version | Max Version |
|---|---|---|---|---|---|
| String | Content-Type | application/json | Required | v2 | |
| String | Authorization | Basic {authToken} | Required | v2 |
If you do not have the authentication token, please refer to Register App to generate one.
Sample Request Payload
{ "cnr": "PBBTA10007652017"}Response
HTTP status code 200
CaseRecord Object
| Key | Description | Type | Min Version | Max Version |
|---|---|---|---|---|
| caseType | Case type as registered | String | v2 | |
| filingNumber | File number assigned to the case eg 362/2018 | String | v2 | |
| filingDate | Case filing date | String | v2 | |
| filingYear | Filing year if available | String | v2 | |
| registrationNumber | Case registration number eg 362/2018 | String | v2 | |
| registrationDate | Date of registration of the case | String | v2 | |
| cnrNumber | Unique case identification number | String | v2 | |
| state | Court state where case is registered | String | v2 | |
| district | Court district where case is registered | String | v2 | |
| courtName | Name of the court eg Junior Civil Judge Court | String | v2 | |
| courtNumberAndJudge | Court number and judge info if available. Eg. 2-Additional Junior Civil Judge | String | v2 | |
| courtEstablishment | Court complex / establishment name where the case is being contested | String | v2 | |
| firstHearingDate | Date of first hearing of the case | String | v2 | |
| nextHearingDate | Next hearing date if case is in pending state. For disposed cases this could be empty. | String | v2 | |
| caseStage | Current stage of the case. Eg. BAIL HEARING etc. | String | v2 | |
| decisionDate | Date of decision if the case stands disposed. | String | v2 | |
| natureOfDisposal | Type of disposal, contested, uncontested etc if the case is disposed. | String | v2 | |
| caseStatus | Case status - Pending, Disposed etc. | String | v2 | |
| coram | Generally applies to Hon'able High courts, indicates the number of judges on the bench Eg, 1760 HONOURABLE MR. JUSTICE KALYAN RAI SURANA | String | v2 | |
| judicial | Judicial section information generally available for higher courts only e.g Criminal Section | String | v2 | |
| causeListName | Name of the cause list if available | String | v2 | |
| bench | Applicable for higher courts. Name of the bench that heard the case. eg Single Bench | String | v2 | |
| shortOrder | Short order if put up for hearing on another date | String | v2 | |
| petitioners | List of petitioners as mentioned in the case. Each petitioner has the following fields. petitionerName - Name of the petitioner petitionerCounsel- Name of the advocate / counsel if available | Array | v2 | |
| petitionersText | All the petitioners's information combined in one long text format. | String | v2 | |
| respondents | List of respondents as mentioned in the case. Each respondent in the list has the following fields. respondentName - Name of the respondent respondentCounsel - Counsel or the advocate name for the respondent | Array | v2 | |
| respondentsText | All the respondent's information combined in one long text format | String | v2 | |
| acts | List of Acts and corresponding sections as applicable to this case. Each entry in the list has the following structure. act - Name of the act as applied to the case sections - Applied sections from the corresponding act. | Array | v2 | |
| interlocutoryApplicationDetails | List of any interlocutory petitions/applications (IA) filed. An IA is generally filed in existing legal proceedings to request interim relief. Each item in the list has the following structure. number IA file number party Party name and counsel that filed IA filingDate Date of filing of the IA application nextDate Next date as applicable status Status of the application - approved, rejected, in hearing etc. Null if the details are not available | Array | v2 | |
| caseHistory | History of case hearings. This is a list, each item in the list has the following structure. reg - Registration number if available causeListType - Cause list name generally applicable for higher courts only judge - Judge / bench that heard the case. purpose - Purpose of hearing nextHearingDate - Date of next hearing as assigned businessDate - Date of hearing businessDescription - A brief description of what happened during this hearing adjournmentReason - Reason if the hearing was adjourned. | Array | v2 | |
| orders | List of order and judgements if available. Each order in the list has the following structure - number - Order number orderDate - Date on which the order was issued judge - Judge / bench that issued the order attachment - In basic mode, attachment documents are not provided and set as null. Refer to Advanced mode API for order documents. | Array | v2 | |
| objections | List of any objections raised by either of the parties during the trial. Each objection has the following structure. number - Objection number objection - Objection title / description scrutinyDate - Date of scrutiny as assigned for the object complianceDate - Compliance date if any receiptDate - Date of receipt of the scrutiny | Array | v2 | |
| category | Category of the case generally applies to the higher courts. Eg. 10266 - Bail Application Under section 439 Cr. P. C ( 308 ) | String | v2 | |
| subCategory | Sub category if applicable | String | v2 | |
| subSubCategory | Further division under the sub category if applicable | String | v2 | |
| fir | Details of FIR if any mapped to this case. The FIR object has the following structure. state - State where the police station is located district - District where the police station is located policeStation - Name of the police station number - FIR number year - Date or year in which FIR is filed | Object | v2 | |
| lowerCourt | Lower court information if applicable. It has the following structure - courtNumberAndName - Name of the lower court caseNumberAndYear - Case number as year as registered in the lower court state - State where lower court is located district - District where lower court is located | Object | v2 | |
| documents | List of documents as filed by the counsels in the case. Each document object has the following structure. docNumber - Document number as assigned at the time of filing docName - Name of the document filed advocate - Counsel name who filed the document receivingDate - Date of receiving as registered in the court records filedBy - Party name | Array | v2 | |
| linkedCases | Case linked to the provided case. Each linked case object has the following structure. filingNumber - Linked case filing number caseNumber - Linked case number | Array | v2 | |
| transfers | List of transfers to other courts if any. Each transfer object has the following structure. reg - Registration no transferred - Date of transfer from - Source court name to - Destination court name | Array | v2 |
Sample Response
Sample response for valid CNR number
{ "caseType": "BA - BAIL APPLICATION", "filingNumber": "761/2017", "filingDate": "16-05-2017", "filingYear": "2017", "registrationNumber": "126/2017", "registrationDate": "16-05-2017", "cnrNumber": "PBBTA10007652017", "state": "Punjab", "district": "Bathinda", "courtName": "Criminal Courts, Talwandi Sabo", "courtNumberAndJudge": "1-Sub Divisional Judicial Magistrate", "courtEstablishment": "Chief Judicial Magistrate, Taluka Court, Talwandi Sabo", "firstHearingDate": "16-May-2017", "nextHearingDate": null, "caseStage": null, "decisionDate": "20-May-2017", "natureOfDisposal": "Contested - ALLOWED", "caseStatus": "Case Disposed", "coram": null, "judicial": null, "causeListName": null, "bench": null, "shortOrder": null, "petitioners": [ { "petitionerName": "STATE OF PUNJAB", "petitionerCounsel": "Advocate - APP" } ], "petitionersText": "1) STATE OF PUNJAB\n Advocate - APP", "respondents": [ { "respondentName": "AMRITPAL SINGH @ AMRIT", "respondentCounsel": "Advocate - Parveen Kumar Ranga" } ], "respondentsText": "1) AMRITPAL SINGH @ AMRIT\n Advocate - Parveen Kumar Ranga", "acts": [ { "act": "Code of Criminal Procedure, 1973", "sections": "61, 1, 14EXCISEACT" } ], "interlocutoryApplicationDetails": null, "caseHistory": [ { "reg": "126/2017", "causeListType": null, "judge": "Sub Divisional Judicial Magistrate", "purpose": "Consideration", "nextHearingDate": "20-05-2017", "businessDate": "16-05-2017" }, { "reg": "126/2017", "causeListType": null, "judge": "Sub Divisional Judicial Magistrate", "purpose": "Disposed", "nextHearingDate": null, "businessDate": "20-05-2017" } ], "orders": [ { "number": "1", "orderDate": "16-05-2017", "judge": null, "attachment": null }, { "number": "2", "orderDate": "20-05-2017", "judge": null, "attachment": null } ], "objections": null, "category": null, "subCategory": null, "subSubCategory": null, "fir": { "state": null, "district": null, "policeStation": "Talwandi Sabo", "number": "94", "year": "2017" }, "lowerCourt": null, "documents": null, "linkedCases": null, "transfers": []}Sample response for invalid CNR number / data does not exist
{ "valid": false, "message": "Data not found"}Error Response
| Parameter | Type | Description |
|---|---|---|
| code | Number | Unique error codes for different errors. Always available. |
| message | String | Error message describing the error. Always Available. |
| details | String | Detail error message. Available only for certain types of errors. |
Error Codes
| HTTP Status | Error Code | Error Message |
|---|---|---|
| 400 | 4001 | Malformed data or missing required parameter values |
| 400 | 4005 | Operation could not be performed due to low credits balance |
| 401 | 4016 | Invalid client authorization |
| 403 | 4031 | Unauthorized access |
| 403 | 4035 | Requested service is not provisioned for your account |
| 403 | 4039 | Client's IP address is not whitelisted |
| 403 | 4035 | Requested service is not provisioned for your account |
| 429 | 4291 | Maximum account rate limit exceeded |
| 429 | 4292 | Maximum API rate limit exceeded |
| 429 | 4293 | Maximum account daily limit exceeded |
| 429 | 4294 | Maximum API daily limit exceeded |
| 500 | 5001 | Request could not be processed |
Sample Error Response
{ "code": 4001, "message": "Malformed data or missing required parameter values"}