API family
Court data API
Find cases by CNR, party or number, read status and orders, check cause lists, match CNRs to a day and work out court fee. Prices and examples.
Court data is public data read from the courts' own systems (eCourts, cause lists, tribunal portals) and shared by every firm. All calls need the scope data:read. The examples use the sandbox and a test key; names and ids in them are made up. Money is in credits (1 credit is ₹1 before GST); see pricing.
Every request carries Authorization: Bearer $AOS_KEY. Every response carries AOS-Request-Id, AOS-Credits-Charged and the RateLimit-* headers. Failures use the error shape and are not billed.
#The case object
{
"object": "case",
"cnr": "SBXX010000012026",
"court": "SBHC-S",
"court_name": "Sandbox High Court, South Bench",
"court_no": "5",
"case_type": "RFA",
"case_type_name": "Regular First Appeal",
"registration_number": "3964/2026",
"filing_date": "2026-08-02",
"petitioner": "Fernandes Logistics LLP",
"respondent": "Reddy Textiles Pvt Ltd",
"petitioner_advocate": "Adv. Deepa Kulkarni",
"respondent_advocate": "Adv. Gurmeet Nair",
"judge": "Hon'ble Justice R. Fernandes",
"stage": "Admission",
"status": "pending",
"next_hearing_date": "2026-12-08",
"decision_date": null,
"protected": false,
"acts": [],
"fetched_at": null,
"cached": false,
"stale": false,
"sandbox": true,
"orders": [
{
"object": "order",
"id": "sbx_SBXX010000012026_4",
"cnr": "SBXX010000012026",
"kind": "order",
"no": "4",
"date": "2026-11-06",
"title": "Order",
"has_text": true,
"has_pdf": true,
"pages": null,
"protected": false,
"sandbox": true
}
]
}
statusispendingordisposed. A disposed case has adecision_dateand nonext_hearing_date.courtisdistrict,highorscfor real cases, and a bench code (SBHC-P,SBHC-N,SBHC-S) in the sandbox.actslists the acts and sections the court recorded, as{ "act", "short", "sections": [] }.ordersholds the newest 30 orders, newest first, without their text. It is absent in search results. Read an order withGET /orders/{id}.fetched_atis when we last read the court.cachedis true when the answer came from our stored record.staleis true when we could not reach the portal and the stored record is more than 24 hours old.sandboxis true for sandbox cases.
#Protected cases and takedowns
Where the law protects the parties (POCSO, sexual offences, matrimonial and juvenile cases), protected is true and every party name is shown as [name withheld: protected category]. The text and PDF of such an order are withheld too. A name search never returns a protected case.
If a court or a person has obtained a takedown or masking order, a suppressed record answers 404 as if it did not exist, and a suppressed name is masked in every response. We act on a request within 72 hours. To send one, use the grievance page at https://adv.heliosynctech.com/grievance.
#Search cases
GET /cases · ₹0.60, then ₹0.40 from 1,00,000 a month per search · free when nothing is found
Find cases by party, advocate or case number. Send at least one of party, advocate or number. The price is per search, whatever the number of rows.
| Parameter | Meaning |
|---|---|
party |
A party's name, at least 3 characters. Needs a paid account; otherwise 403 paid_account_required. Every name search is logged. |
advocate |
An advocate's name, at least 3 characters. Same rule. Covers cases that appear in published cause lists. |
number |
Part of the case number, such as 3964/2026 or RFA 3964. |
year |
Registration year, yyyy. |
court |
Part of the court's name. In the sandbox: SBHC, SBHC-P, SBHC-N or SBHC-S. |
limit, cursor |
Pagination. |
curl "https://adv.heliosynctech.com/api/v1/cases?number=3964/2026&limit=2" -H "Authorization: Bearer $AOS_KEY"
{
"object": "list",
"data": [
{
"object": "case",
"cnr": "SBXX010000012026",
"court": "SBHC-S",
"court_name": "Sandbox High Court, South Bench",
"case_type": "RFA",
"registration_number": "3964/2026",
"petitioner": "Fernandes Logistics LLP",
"respondent": "Reddy Textiles Pvt Ltd",
"status": "pending",
"next_hearing_date": "2026-12-08",
"protected": false,
"sandbox": true
}
],
"has_more": false,
"next_cursor": null
}
A search result carries the whole case object except orders (shortened above). Call GET /cases/{cnr} for the orders.
#Get a case
GET /cases/{cnr} · ₹1, then ₹0.70 from 1,00,000 a month per case
Read a case: status, stage, parties, advocates, judge, acts and the next date, with its newest orders listed. A plain call always costs the same, even when the stored copy is more than 24 hours old and we have to read the court's portal to answer it. AOS-Credits-Charged shows the price.
curl https://adv.heliosynctech.com/api/v1/cases/SBXX010000012026 -H "Authorization: Bearer $AOS_KEY"
The response is the case object. A malformed CNR gives 400 invalid_cnr and an unknown one 404 case_not_found. Both are free.
If the portal is down, a plain call answers from the stored record with "stale": true, still at the plain price. If nothing is stored for that CNR, you get 503 upstream_unavailable with the code portal_unavailable, and nothing is charged. In the sandbox, SBXX010000042026 always does this.
#Get a case, fresh from the court
GET /cases/{cnr}?fresh=true · ₹2.50 per case
Read the court's own portal now, and update our copy. Use it for a case you are about to act on, such as the morning of a hearing. If the portal is down you get 503 portal_unavailable, free. A fresh read never falls back to the stored copy; leave out fresh=true to get that.
curl "https://adv.heliosynctech.com/api/v1/cases/SBXX010000012026?fresh=true" -H "Authorization: Bearer $AOS_KEY"
The response is the case object with "cached": false and a fetched_at of a moment ago.
#List a case's orders
GET /cases/{cnr}/orders · free
List the orders and judgments on a case, newest first, without their text. This list is free; reading an order costs. For a real CNR the case must already be stored: read it once with GET /cases/{cnr}, or you get 404 case_not_found.
curl "https://adv.heliosynctech.com/api/v1/cases/SBXX010000032026/orders?limit=2" -H "Authorization: Bearer $AOS_KEY" \
-H "AOS-Sandbox-Date: 2026-12-01"
{
"object": "list",
"data": [
{ "object": "order", "id": "sbx_SBXX010000032026_196", "cnr": "SBXX010000032026", "kind": "order", "no": "196", "date": "2026-12-01", "title": "Daily order", "has_text": true, "has_pdf": true, "pages": null, "protected": false, "sandbox": true },
{ "object": "order", "id": "sbx_SBXX010000032026_195", "cnr": "SBXX010000032026", "kind": "order", "no": "195", "date": "2026-11-30", "title": "Daily order", "has_text": true, "has_pdf": true, "pages": null, "protected": false, "sandbox": true }
],
"has_more": true,
"next_cursor": "bzoy"
}
Order ids look like ord_4821 for real orders and sbx_{cnr}_{n} in the sandbox. has_text and has_pdf say whether the text and the PDF are stored yet; both are false for a protected case. kind is order or judgment.
#Read an order
GET /orders/{id} and GET /orders/{id}/pdf · ₹1.50, then ₹1 from 10,000 a month per order
GET /orders/{id} returns the order with its text. GET /orders/{id}/pdf returns the PDF (Content-Type: application/pdf). Each request is one order. If you want a summary, see GET /orders/{id}/summary in intelligence.
curl https://adv.heliosynctech.com/api/v1/orders/sbx_SBXX010000032026_196 -H "Authorization: Bearer $AOS_KEY"
curl https://adv.heliosynctech.com/api/v1/orders/sbx_SBXX010000032026_196/pdf -H "Authorization: Bearer $AOS_KEY" -o order.pdf
{
"object": "order",
"id": "sbx_SBXX010000032026_196",
"cnr": "SBXX010000032026",
"kind": "order",
"no": "196",
"date": "2026-12-01",
"title": "Daily order",
"has_text": true,
"has_pdf": true,
"pages": null,
"protected": false,
"text": "Listed. Heard for some time. List tomorrow, 02-12-2026.",
"withheld": false,
"sandbox": true
}
- Protected cases: the text is withheld. You get
"text": nulland"withheld": true, and it is free. The PDF answers403 protected_category. - Text not read yet:
"text": nulland free. Try again later. - PDF not stored yet:
404 order_pdf_unavailable, free. We download a case's PDFs after the case is read, so try again in a few minutes. - A test key with a real
ord_id gets400 test_mode_live_order.
#Read a cause list
GET /cause-lists · ₹1 per list returned
A cause list is the court's list of the cases it will hear on a day. This returns the lists of a court for a date. Send q (a case number or a party name) to keep only the entries that mention it; a list with no matching entry is not returned and not charged. You pay for each list returned.
| Parameter | Meaning |
|---|---|
court |
A cause-list court code from GET /courts (sc, dhc, …). Sandbox: SBHC, SBHC-P, SBHC-N, SBHC-S. |
date |
The hearing date, yyyy-MM-dd. Default today (sandbox: the sandbox date). |
q |
Optional: a case number or party name, at least 3 characters. |
limit, cursor |
Pagination. |
curl "https://adv.heliosynctech.com/api/v1/cause-lists?court=SBHC&date=2026-12-08&q=3964/2026" -H "Authorization: Bearer $AOS_KEY"
{
"object": "list",
"data": [
{
"object": "cause_list",
"id": "sbx_cl_SBHC_2026-12-08",
"court": "SBHC",
"court_name": "Sandbox High Court cause list",
"date": "2026-12-08",
"title": null,
"entry_count": 1,
"entries_truncated": false,
"entries": [
{
"object": "cause_list_entry",
"item": "1",
"cnr": "SBXX010000012026",
"case_number": "RFA 3964/2026",
"court": "SBHC-S",
"court_no": "5",
"bench": "Hon'ble Justice R. Fernandes",
"section": null,
"petitioner": "Fernandes Logistics LLP",
"respondent": "Reddy Textiles Pvt Ltd",
"parties": "Fernandes Logistics LLP v. Reddy Textiles Pvt Ltd",
"advocates": null,
"stage": "Admission",
"protected": false
}
],
"sandbox": true
}
],
"has_more": false,
"next_cursor": null
}
A list returns at most 2,000 entries. If entries_truncated is true, narrow it with q. Real lists have an id like cl_8841.
#Match CNRs to a cause list
POST /cause-lists/match · ₹0.10 per CNR · free when none is listed
Send your cases and a date. You get back one answer per CNR: whether it is listed that day, and where. Use it every evening for tomorrow's board instead of reading whole lists.
| Field | Meaning |
|---|---|
cnrs |
An array of 1 to 100 CNRs. |
date |
The hearing date, yyyy-MM-dd. |
curl -X POST https://adv.heliosynctech.com/api/v1/cause-lists/match \
-H "Authorization: Bearer $AOS_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: 3c0b3a8e-9f43-4d3a-b3b5-0f6a7b9e1c22" \
-d '{ "cnrs": ["SBXX010000012026", "SBXX010000022026"], "date": "2026-12-08" }'
{
"object": "list",
"data": [
{
"object": "cause_list_match",
"cnr": "SBXX010000012026",
"date": "2026-12-08",
"listed": true,
"entry": { "object": "cause_list_entry", "item": "1", "cnr": "SBXX010000012026", "case_number": "RFA 3964/2026", "court": "SBHC-S", "court_no": "5", "bench": "Hon'ble Justice R. Fernandes", "parties": "Fernandes Logistics LLP v. Reddy Textiles Pvt Ltd", "stage": "Admission", "protected": false }
},
{ "object": "cause_list_match", "cnr": "SBXX010000022026", "date": "2026-12-08", "listed": false, "entry": null }
],
"has_more": false,
"next_cursor": null
}
#Search tribunal orders
GET /tribunal-orders · ₹0.60, then ₹0.40 from 1,00,000 a month per search · free when nothing is found
Search the orders of tribunals by forum and text. The forums are nclat, nclt, itat, cestat, ngt, cci, cat, aft, aptel and tdsat. This is the same library as judgment search, so it is the same in test and live mode.
| Parameter | Meaning |
|---|---|
forum |
One of the forums above. |
q |
Words from the title, case number or CNR, at least 3 characters. |
limit, cursor |
Pagination. |
curl "https://adv.heliosynctech.com/api/v1/tribunal-orders?forum=nclt&q=insolvency" -H "Authorization: Bearer $AOS_KEY"
{
"object": "list",
"data": [
{
"object": "tribunal_order",
"id": 4821,
"forum": "nclt",
"court_name": "NCLT Mumbai Bench",
"title": "Sample Bank v. Sample Infra Ltd",
"case_no": "CP (IB) 112/2026",
"cnr": null,
"bench": "Hon'ble Member (J) A. Rao",
"decision_date": "2026-11-20",
"disposal": "Admitted",
"pages": 14,
"snippet": "…the application under section 7 of the Code is admitted…"
}
],
"has_more": false,
"next_cursor": null
}
#Read a tribunal order
GET /tribunal-orders/{id} · ₹1.50 per order · free when its text is not read yet
curl https://adv.heliosynctech.com/api/v1/tribunal-orders/4821 -H "Authorization: Bearer $AOS_KEY"
{
"object": "tribunal_order",
"id": 4821,
"forum": "nclt",
"court_name": "NCLT Mumbai Bench",
"title": "Sample Bank v. Sample Infra Ltd",
"case_no": "CP (IB) 112/2026",
"decision_date": "2026-11-20",
"paragraphs": [ { "position": 1, "label": "Para 1", "text": "Heard learned counsel for the applicant…" } ],
"text": null,
"next_from": null
}
The order comes as numbered paragraphs, up to 300 a call. When next_from is not null, call again with it as the starting paragraph.
#Work out court fee
POST /court-fee · ₹0.50 per calculation
The court fee on a plaint in a State, worked out by code from the State's Court Fees Act, not by AI. We work it for Karnataka, Rajasthan, Kerala, Telangana, Maharashtra and Gujarat; any other State is refused with 400 state_not_supported (we have not confirmed its Act), and nothing is charged.
| Field | Meaning |
|---|---|
state |
One of the States above. |
value |
The value of the suit in rupees. |
curl -X POST https://adv.heliosynctech.com/api/v1/court-fee \
-H "Authorization: Bearer $AOS_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: 8d2e7b1a-3f6c-4a59-b0b4-6d1f2e9c4a33" \
-d '{ "state": "Karnataka", "value": 500000 }'
{
"object": "court_fee",
"state": "Karnataka",
"value": 500000,
"fee": 33375,
"currency": "INR",
"act": "Karnataka Court-fees and Suits Valuation Act, 1958",
"article": "Schedule I, Article 1",
"as_amended": "clauses (i) to (xvi) as substituted by Karnataka Act 2 of 1993",
"working": "₹17,125 + 6.5% of ₹2,50,000 above ₹2,50,000",
"fixed_fees": []
}
#Courts, case types and holidays
All three are free, and all are lists.
GET /courts lists the courts we cover, as { "object": "court", "id", "name", "level", "state", "holiday_key", "cause_lists", "sandbox" }. level is supreme, high or tribunal. Use id as the court of a cause-list call, and holiday_key for holidays and limitation. A test key sees only the Sandbox High Court and its three benches.
GET /case-types lists the case types seen in stored records, most common first, as { "object": "case_type", "code", "name", "cases" }.
GET /holidays?court=&year= lists the days a court does not sit in a year: the three fixed national holidays, plus the court's published list where we hold it. Weekends are not listed. court is a holiday_key or a code such as sc, hc:delhi or dhc. When unsure whether a court sits, treat the day as open.
curl "https://adv.heliosynctech.com/api/v1/holidays?court=sc&year=2026" -H "Authorization: Bearer $AOS_KEY"
{
"object": "list",
"year": 2026,
"data": [ { "object": "holiday", "from": "2026-01-26", "to": "2026-01-26", "name": "Republic Day", "court": "all" } ],
"has_more": false,
"next_cursor": null
}