Acts and Sections | API Reference Guide | CourtMesh
    Skip to main content

    Acts and sections

    Indian statutes: find an act, read a provision with its amendment notes, follow what replaced a repealed law, and list judgments citing a provision.

    Acts and sections endpoints
    Nine reads, each 1 credit when it returns something and free when it returns nothing.

    Before you start

    • Needs the legislation scope. A key with no explicit scopes carries all of them.
    • Text is the statute as published, with no AI commentary. Repeal status is on every response, so check it before relying on a provision.
    • Every endpoint costs 1 credit when it returns something; nothing returned costs nothing.
    • Search, resolve, lookup and citing cases have a lower per minute limit than other calls and are refused with 429 above it.
    GET

    /acts/resolve

    1 credit, 0 when empty

    Turns what a lawyer writes ("IPC", "NI Act", "Cr.P.C.") into the act, returning up to five candidates, best first.

    Query parameters

    FieldTypeRequiredNotes
    qstringYesA 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 }
    }
    GET

    /acts/:slug

    1 credit, 0 when empty

    The act's details and repeal status, without its text. 404 when there is no such act.

    Path parameters

    FieldTypeRequiredNotes
    slugstringYesThe act slug, from search or resolve, for example indian-penal-code-1860.
    GET

    /acts/:slug/history

    1 credit, 0 when empty

    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

    FieldTypeRequiredNotes
    slugstringYesThe act slug, from search or resolve, for example indian-penal-code-1860.
    GET

    /acts/:slug/sections

    1 credit, 0 when empty

    The provisions of an act in order, without their text. An act published only as one document has none.

    Path and query parameters

    FieldTypeRequiredNotes
    slugstringYesThe act slug, from search or resolve, for example indian-penal-code-1860.
    pageintegerNo1 to 1000, default 1.
    limitintegerNoPage size, 1 to 100, default 20, and no more than your plan allows.
    GET

    /acts/:slug/sections/:sectionSlug

    1 credit, 0 when empty

    The provision's full text, structured into blocks, with its amendment notes and repeal status.

    Path parameters

    FieldTypeRequiredNotes
    slugstringYesThe act slug, from search or resolve, for example indian-penal-code-1860.
    sectionSlugstringYesThe 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 }
    }
    GET

    /acts/:slug/sections/:sectionSlug/citing-cases

    1 credit, 0 when empty

    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.

    • Not an exhaustive list of every judgment applying the provision, and an empty list does not mean no judgment applied it. Some matters are never listed.
    • listAvailable is false for a provision we do not list judgments for, including sexual offences and cruelty provisions.
    • A page can hold fewer rows than limit, or none, while hasMore is true, so keep following nextCursor. The list ends at your plan's pagination depth.

    Path and query parameters

    FieldTypeRequiredNotes
    slugstringYesThe act slug, from search or resolve, for example indian-penal-code-1860.
    sectionSlugstringYesThe provision slug, from the table of contents, search or lookup, for example section-302.
    cursorstringNoOpaque cursor from pagination.nextCursor, valid only for the provision it was issued for. Any other value is refused with 400 CURSOR_INVALID.
    limitintegerNoPage 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 }
    }
    GET

    /sections/lookup

    1 credit, 0 when empty

    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

    FieldTypeRequiredNotes
    qstringYesA 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"