DevelopersDocsAPI reference

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
    }
  ]
}
  • status is pending or disposed. A disposed case has a decision_date and no next_hearing_date.
  • court is district, high or sc for real cases, and a bench code (SBHC-P, SBHC-N, SBHC-S) in the sandbox.
  • acts lists the acts and sections the court recorded, as { "act", "short", "sections": [] }.
  • orders holds the newest 30 orders, newest first, without their text. It is absent in search results. Read an order with GET /orders/{id}.
  • fetched_at is when we last read the court. cached is true when the answer came from our stored record. stale is true when we could not reach the portal and the stored record is more than 24 hours old.
  • sandbox is 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": null and "withheld": true, and it is free. The PDF answers 403 protected_category.
  • Text not read yet: "text": null and 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 gets 400 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
}