Indian statutes: find an act, read a provision with its amendment notes, follow what replaced a repealed law, and list judgments citing a provision.
legislation scope. A key with no explicit scopes carries all of them.Finds acts by their title, short form or subject. pagination.total counts matches before unpublished records are removed, so a page can hold fewer rows than limit.
Query parameters
| Field | Type | Required | Notes |
|---|---|---|---|
| q | string | Yes | Words from the title or subject, or a short form. 2 to 200 characters. |
| docClass | enum | No | act, ordinance, rule, regulation, amendment_act, constitution or code. |
| jurisdiction | enum | No | central, state or union_territory. |
| yearFrom | integer | No | Earliest year. |
| yearTo | integer | No | Latest year. |
| page | integer | No | 1 to 1000, default 1. |
| limit | integer | No | Page size, 1 to 100, default 20, and no more than your plan allows. |
Turns what a lawyer writes ("IPC", "NI Act", "Cr.P.C.") into the act, returning up to five candidates, best first.
Query parameters
| Field | Type | Required | Notes |
|---|---|---|---|
| q | string | Yes | A short form or an act name. 2 to 200 characters. |
curl "https://research.courtmesh.ai/api/v1/prod/acts/resolve?q=IPC" \
-H "X-API-Key: cm-YOUR_KEY_HERE"{
"success": true,
"data": {
"query": "IPC",
"matches": [
{
"act": {
"slug": "indian-penal-code-1860",
"title": "The Indian Penal Code, 1860",
"docClass": "act",
"year": 1860,
"number": "45",
"citation": "Act 45 of 1860",
"jurisdiction": "central",
"stateName": null,
"aliases": ["IPC", "Indian Penal Code", "Penal Code"],
"repealed": true,
"repealNote": "Repealed by the Bharatiya Nyaya Sanhita, 2023, with effect from 1 July 2024"
},
"matchedBy": "short_form"
}
]
},
"meta": { "creditsCharged": 1, "metered": true, "weakMatch": false }
}The act's details and repeal status, without its text. 404 when there is no such act.
Path parameters
| Field | Type | Required | Notes |
|---|---|---|---|
| slug | string | Yes | The act slug, from search or resolve, for example indian-penal-code-1860. |
The act level history: what repealed it, the acts that amended it, state amendments, other editions, and rules or notifications made under it. This does not map old sections to new ones.
Path parameters
| Field | Type | Required | Notes |
|---|---|---|---|
| slug | string | Yes | The act slug, from search or resolve, for example indian-penal-code-1860. |
The provisions of an act in order, without their text. An act published only as one document has none.
Path and query parameters
| Field | Type | Required | Notes |
|---|---|---|---|
| slug | string | Yes | The act slug, from search or resolve, for example indian-penal-code-1860. |
| page | integer | No | 1 to 1000, default 1. |
| limit | integer | No | Page size, 1 to 100, default 20, and no more than your plan allows. |
The provision's full text, structured into blocks, with its amendment notes and repeal status.
Path parameters
| Field | Type | Required | Notes |
|---|---|---|---|
| slug | string | Yes | The act slug, from search or resolve, for example indian-penal-code-1860. |
| sectionSlug | string | Yes | The provision slug, from the table of contents, search or lookup, for example section-302. |
curl https://research.courtmesh.ai/api/v1/prod/acts/indian-penal-code-1860/sections/section-302 \
-H "X-API-Key: cm-YOUR_KEY_HERE"{
"success": true,
"data": {
"actSlug": "indian-penal-code-1860",
"slug": "section-302",
"partType": "section",
"number": "302",
"heading": "Punishment for murder",
"actTitle": "The Indian Penal Code, 1860",
"actYear": 1860,
"jurisdiction": "central",
"repealedProvision": false,
"actRepealed": true,
"actRepealNote": "Repealed by the Bharatiya Nyaya Sanhita, 2023, with effect from 1 July 2024",
"text": "Whoever commits murder shall be punished with death, or imprisonment for life, and shall also be liable to fine.",
"blocks": [
{ "depth": 0, "kind": "paragraph", "marker": null, "text": "Whoever commits murder shall be punished with death, or imprisonment for life, and shall also be liable to fine." }
],
"amendments": [],
"previous": { "slug": "section-301", "label": "Section 301" },
"next": { "slug": "section-303", "label": "Section 303" }
},
"meta": { "creditsCharged": 1, "metered": true }
}Judgments citing exactly this provision, newest first. A list for section 302 of the Penal Code does not include judgments that cite only its successor. Read one with GET /cases/:id.
listAvailable is false for a provision we do not list judgments for, including sexual offences and cruelty provisions.limit, or none, while hasMore is true, so keep following nextCursor. The list ends at your plan's pagination depth.Path and query parameters
| Field | Type | Required | Notes |
|---|---|---|---|
| slug | string | Yes | The act slug, from search or resolve, for example indian-penal-code-1860. |
| sectionSlug | string | Yes | The provision slug, from the table of contents, search or lookup, for example section-302. |
| cursor | string | No | Opaque cursor from pagination.nextCursor, valid only for the provision it was issued for. Any other value is refused with 400 CURSOR_INVALID. |
| limit | integer | No | Page size, 1 to 100, default 20, and no more than your plan allows. |
curl "https://research.courtmesh.ai/api/v1/prod/acts/indian-penal-code-1860/sections/section-302/citing-cases?limit=20" \
-H "X-API-Key: cm-YOUR_KEY_HERE"{
"success": true,
"data": {
"section": { "actSlug": "indian-penal-code-1860", "slug": "section-302", "number": "302" },
"listAvailable": true,
"note": "Not an exhaustive list of every judgment applying this provision. An empty list does not mean no judgment applied it.",
"cases": [
{
"id": "65f0c0ffee0000000000abcd",
"title": "State v. Example",
"court": "Delhi High Court",
"courtType": "High Court",
"cnr": "DLHC010084212021",
"caseNumber": "CRL.A. 12/2021",
"decisionDate": "2024-05-06"
}
]
},
"meta": { "creditsCharged": 1, "metered": true },
"pagination": { "limit": 20, "hasMore": false, "nextCursor": null }
}Full text search across provisions, with a short snippet per row. Narrow it to one act with act. pagination.total counts matches before unpublished records are removed, so a page can hold fewer rows than limit.
Query parameters
| Field | Type | Required | Notes |
|---|---|---|---|
| q | string | Yes | Words to find in the provision. 2 to 200 characters. |
| act | string | No | An act slug. |
| number | string | No | Only provisions with this exact number, for example 498A. |
| page | integer | No | 1 to 1000, default 1. |
| limit | integer | No | Page size, 1 to 100, default 20, and no more than your plan allows. |
Turns shorthand such as "section 302 IPC", "s.138 NI Act" or "Article 21" into the provision it names. A lettered section keeps its letter, so 498A is never answered with 498. "Order VII Rule 11 CPC" is not resolved and returns no match. ambiguous is true when no act was named; choose or name the act then.
Query parameters
| Field | Type | Required | Notes |
|---|---|---|---|
| q | string | Yes | A citation. 1 to 200 characters. |
curl "https://research.courtmesh.ai/api/v1/prod/sections/lookup?q=s.138%20NI%20Act" \
-H "X-API-Key: cm-YOUR_KEY_HERE"