1. IndiaCode
  2. /API
Developers

API Documentation v1.4

A read-only JSON API over the Acts of India, their subordinate legislation, and the reported judgments that construe them.

  • Base URL https://indiacode.ecourtsindia.com/api/v1
  • Format JSON
  • Auth None
  • Endpoints 25

Browse endpoints OpenAPI 3.1 Bulk data

Getting started

There is no key and no account. Nothing to sign up for, nothing to rotate, nothing to keep out of your client-side code. Every response, including every error, carries Access-Control-Allow-Origin: *, so a browser can call this directly.

curl 'https://indiacode.ecourtsindia.com/api/v1/bns/section/103'

Every list is the same shape

Paging code written against one endpoint works on all of them. total is the size of the whole result set, never the size of the page; count is what came back this time; next is a URL you can follow, or null when there is nothing after this page.

{
  "total": 7865,
  "count": 2,
  "limit": 2,
  "offset": 0,
  "next": "https://indiacode.ecourtsindia.com/api/v1/instruments?kind=rule&limit=2&offset=2",
  "instruments": [ … ]
}

No parameter is ever ignored

A misspelled filter is a 400, not a silently different answer. ?kinde=rule returns unknown_param with the list of parameters that endpoint does accept, because a page answering a question you did not ask is worse than an error.

Core concepts

Act ids

A slug, stable and readable: bns, cpc, ni-act, constitution-of-india. It is the same string in the URL of the page and in the API.

Provision numbers are strings

124A, 43-B and 6A are provision numbers. Never coerce them to integers: you will lose the letter and land on a different provision.

Sections and articles

Every Act has sections. The Constitution has articles, and answers at /api/v1/constitution-of-india/article/21. The unit field on an Act tells you which.

Published against listed

/acts is what we publish with its text. /listed-acts is the 8,351 State Acts India Code holds only as a scanned document. They are different collections because they are different things.

Endpoints

Acts and provisions

The statute book itself: 2,246 Acts and 77,072 provisions, each with its own permanent address.

GET /api/v1/acts

List Acts

Every Act we publish with its text, newest filter first. Central and State together; narrow with the filters.

Parameters
ParameterInRequiredDescription
q query No Substring of the short title.
ministry query No Substring of the administering Ministry.
year query No The year the Act was numbered in, which is not always the year in its title: The Uttar Pradesh Rural Abadi Records Act, 2025 is Act 4 of 2026 and answers to year=2026.
jurisdiction query No central, state, or a State slug from /meta.
subject query No One of the eighteen subject shelves. See /subjects.
in_force query No 1 or 0. true/false and yes/no are accepted too.
limit query No Rows per page, up to 1000. limit=0 returns the count alone.
offset query No Rows to skip. Prefer following next.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/acts?jurisdiction=central&subject=taxation&limit=2'

Open this call in the browser

Example response 200 OK
{
  "total": 50,
  "count": 2,
  "limit": 2,
  "offset": 0,
  "next": "https://indiacode.ecourtsindia.com/api/v1/acts?jurisdiction=central&subject=taxation&limit=2&offset=2",
  "acts": [
    {
      "id": "income-tax-act",
      "short_title": "The Income-tax Act, 1961",
      "act_number": "43",
      "act_year": 1961,
      "ministry": "Ministry of Finance",
      "jurisdiction": "CENTRAL",
      "unit": "section",
      "section_count": 800,
      "in_force": false,
      "url": "https://indiacode.ecourtsindia.com/income-tax-act/"
    }
  ]
}
GET /api/v1/acts/{act}

One Act

The Act, every provision number and heading, its Schedules and its amending Acts. The Code of Civil Procedure also reports its First Schedule here, because its procedure is not in its sections.

Parameters
ParameterInRequiredDescription
act path Yes Act id, e.g. bns, cpc, ni-act.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/acts/cpc'

Open this call in the browser

Example response 200 OK
{
  "act": { "id": "cpc", "short_title": "The Code of Civil Procedure, 1908", ... },
  "count": 171,
  "sections": [
    { "number": "9", "heading": "Courts to try all civil suits unless barred",
      "words": 96, "indexable": true,
      "url": "https://indiacode.ecourtsindia.com/cpc/section/9/" }
  ],
  "schedules": [ { "ord": 1, "title": "THE FIRST SCHEDULE" } ],
  "amendments": [ { "title": "The Commercial Courts Act, 2015", "year": 2015, "act_number": "4" } ],
  "first_schedule": {
    "orders": 58,
    "rules": 728,
    "api": "https://indiacode.ecourtsindia.com/api/v1/cpc/schedule"
  }
}
GET /api/v1/{act}/section/{number}

One provision

The text, and everything the corpus knows about it: how the BNSS First Schedule classifies it, the subordinate legislation made under it, the judgments that construe it, and its counterpart across a statutory transition. Articles of the Constitution answer at /article/{number}.

Parameters
ParameterInRequiredDescription
act path Yes Act id.
number path Yes Provision number. A string, always: 124A and 43-B are valid and are never integers.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/bns/section/103'

Open this call in the browser

Example response 200 OK
{
  "act": { "id": "bns", "short_title": "The Bharatiya Nyaya Sanhita, 2023", ... },
  "section": { "number": "103", "heading": "Punishment for murder",
               "text": "(1) Whoever commits murder shall be punished with death…",
               "html": "<p>…</p>", "words": 76 },
  "classification": [
    { "offence": "Murder", "punishment": "Death, or imprisonment for life…",
      "cognizable": "Cognizable", "bailable": "Non-bailable",
      "triable_by": "Court of Session" }
  ],
  "instruments": [],
  "judgments": [ { "title": "…", "court_level": "SC", "date": "…", "url": "…" } ],
  "corresponds_to": [ { "act": "ipc", "number": "302", "relation": "near-identical" } ],
  "url": "https://indiacode.ecourtsindia.com/bns/section/103/"
}
GET /api/v1/acts/{act}/xrefs

Cross-references

Every provision this Act points at, or the provisions that point back at it. 45,967 edges across the corpus, generated from the text and emitted only where the destination exists.

Parameters
ParameterInRequiredDescription
act path Yes Act id.
direction query No out (default) or in.
limit query No Rows per page.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/acts/ni-act/xrefs?direction=in&limit=2'

Open this call in the browser

Example response 200 OK
{
  "total": 35,
  "count": 2,
  "xrefs": [
    { "from": { "act": "ni-act", "act_title": "The Negotiable Instruments Act, 1881",
                "section": "1", "url": "https://indiacode.ecourtsindia.com/ni-act/section/1/" },
      "to":   { "act": "ni-act", "act_title": "The Negotiable Instruments Act, 1881",
                "section": "21", "heading": "''At sight''",
                "url": "https://indiacode.ecourtsindia.com/ni-act/section/21/" } }
  ]
}

The CPC First Schedule

Order 7 Rule 11, Order 39 Rule 1, Order 41 Rule 27: the procedure a civil suit is actually run on. 728 Rules over 58 Orders. India Code publishes the two as flat lists with no tie between them; the tie here is recovered from the Government’s consolidated text of the Code.

GET /api/v1/cpc/schedule

The Orders

All 58 Orders. complete is false where an Order is one Rule short, which is three of them: say so rather than let a caller assume otherwise.

Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/cpc/schedule'

Open this call in the browser

Example response 200 OK
{
  "act": "cpc",
  "orders": 58,
  "rules": 728,
  "results": [
    { "order": "VII", "order_arabic": 7, "title": "Plaint",
      "rules": 21, "complete": true,
      "url": "https://indiacode.ecourtsindia.com/cpc/order/vii/",
      "api": "https://indiacode.ecourtsindia.com/api/v1/cpc/order/vii" }
  ]
}
GET /api/v1/cpc/order/{order}

One Order

The Order and the Rules under it.

Parameters
ParameterInRequiredDescription
order path Yes The numeral or the arabic form: vii and 7 both work. Order XI is in the Schedule twice; the Commercial Division’s is xi-2.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/cpc/order/7'

Open this call in the browser

Example response 200 OK
{
  "order": "VII", "order_arabic": 7, "title": "Plaint",
  "complete": true, "count": 21,
  "rules": [
    { "rule": "11", "heading": "Rejection of plaint", "words": 256,
      "api": "https://indiacode.ecourtsindia.com/api/v1/cpc/order/vii/rule/11" }
  ]
}
GET /api/v1/cpc/order/{order}/rule/{rule}

One Rule

The Rule and its text, with both forms of its citation.

Parameters
ParameterInRequiredDescription
order path Yes Numeral or arabic.
rule path Yes Rule number. A string: lettered rules are common, as in Order VI rule 14A. Not every Order has every letter, and three Orders are marked complete: false because one Rule of each could not be placed.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/cpc/order/vii/rule/11'

Open this call in the browser

Example response 200 OK
{
  "act": "cpc",
  "order": "VII", "order_arabic": 7, "order_title": "Plaint",
  "rule": "11", "heading": "Rejection of plaint",
  "text": "The plaint shall be rejected in the following cases:…",
  "words": 256,
  "citations": ["Order VII Rule 11 CPC", "Order 7 Rule 11 CPC"],
  "url": "https://indiacode.ecourtsindia.com/cpc/order/vii/rule/11/"
}

Subordinate legislation

35,622 Rules, notifications, circulars, regulations and orders, 31,563 of them carrying their English text. 15,297 have no parent Act: the source recorded none and their enacting formula named none.

GET /api/v1/instruments

List instruments

Filter by kind, by the Act they are made under, or by the exact provision they answer to.

Parameters
ParameterInRequiredDescription
kind query No rule, notification, circular, regulation, order, statute, form, appendix, annexure, regulation-240.
act query No Act id.
section query No With act: everything made under that one provision.
jurisdiction query No Central or a State.
year query No Year of the instrument.
q query No Substring of the title.
has_text query No 1 for the ones whose document yielded English.
limit query No Rows per page.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/instruments?act=environment-act&section=3&limit=1'

Open this call in the browser

Example response 200 OK
{
  "total": 1050,
  "count": 1,
  "instruments": [
    { "key": "0a1b2c3d", "kind": "notification",
      "title": "…", "year": 2026, "jurisdiction": "CENTRAL",
      "act": "environment-act", "act_basis": "recorded",
      "has_text": true,
      "url": "https://indiacode.ecourtsindia.com/rules/0a1b2c3d/" }
  ]
}
GET /api/v1/instruments/{key}

One instrument

Its citation, the English text where the document carried any, a link to the source PDF on India Code, and the provisions it answers to.

Parameters
ParameterInRequiredDescription
key path Yes Eight hex characters. Stable: it is India Code’s own uuid prefix, not a row number.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/instruments/2ef737e1'

Open this call in the browser

Example response 200 OK
{
  "instrument": { "key": "2ef737e1", "kind": "rule", "year": 2003,
                  "title": "(Certifying Authorities) Amendment Rules, 2003…",
                  "act": "it-act" },
  "source_document": { "url": "https://indiacode.gov.in/…", "bytes": 10275 },
  "text": { "chars": 1769, "truncated": false, "body": "…" },
  "provisions": [ { "act": "it-act", "number": "87", "relation": "made_under",
                    "url": "https://indiacode.ecourtsindia.com/it-act/section/87/" } ],
  "licence": "…"
}

Case law and transitions

GET /api/v1/judgments

Judgments

Reported judgments and the provisions they decide, with the note saying what the judgment did with that provision.

Parameters
ParameterInRequiredDescription
act query No Act id. With section, the case law on one provision.
section query No Provision number.
cnr query No Every provision one judgment is authority on.
court query No The levels the corpus actually holds: SC, HC, DC. Derived from the data, so /meta is authoritative and anything else is a 400 rather than an empty page.
precedential query No Restrict to judgments of a given authority, as the corpus records it — binding is the Supreme Court and a High Court within its own jurisdiction. Accepted by the API and until now undocumented.
limit query No Rows per page.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/judgments?act=bns&section=103&court=SC&limit=1'

Open this call in the browser

Example response 200 OK
{
  "total": 10,
  "count": 1,
  "judgments": [
    { "cnr": "SCIN010125642009", "order": "order-19.pdf",
      "title": "Prakash Nayi @ Sen vs The State of Goa…",
      "court": "SC", "court_name": "Supreme Court of India",
      "date": "2023-01-12", "citation": null,
      "precedential_value": "Binding (Supreme Court)",
      "court_marking": "reportable",
      "ratio_decidendi": "When an accused raises a plea of insanity…",
      "applied_to_this_section": "…", "basis": "cited",
      "decided_under": null,
      "url": "…" }
  ]
}
GET /api/v1/mappings

Statutory transitions

IPC to BNS, CrPC to BNSS, Evidence Act to BSA, Income-tax 1961 to 2025. The income-tax correspondence is the Department’s own and carries no score; the other three are measured by text similarity and say so.

Parameters
ParameterInRequiredDescription
pair query No e.g. ipc-bns. See /meta for the four.
from query No Act id of the older enactment.
section query No Provision number in the older enactment.
limit query No Rows per page.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/mappings?from=ipc&section=302'

Open this call in the browser

Example response 200 OK
{
  "total": 1,
  "count": 1,
  "mappings": [
    { "from_act": "ipc", "from_section": "302", "from_heading": "Punishment for murder",
      "to_act": "bns", "to_section": "103", "to_heading": "Punishment for murder",
      "relation": "near-identical", "score": 0.9,
      "alternatives": [
        { "section": "105", "heading": "Punishment for culpable homicide not amounting to murder",
          "score": 0.8063 }
      ],
      "from_url": "https://indiacode.ecourtsindia.com/ipc/section/302/",
      "to_url": "https://indiacode.ecourtsindia.com/bns/section/103/" }
  ]
}

State law we hold no text for

India Code lists 8,351 State Acts as a record and a scanned document and publishes no sections for them. They are here so you can find out the Act exists and reach the Government’s copy of it. No text is served: the extracted text of those scans is searchable on this site, and is not reliable enough to set out as the law.

GET /api/v1/listed-acts

Listed State Acts

Title, State, year, Act number and a link to the document. Not part of /acts, which is what we publish.

Parameters
ParameterInRequiredDescription
q query No Substring of the title.
jurisdiction query No State or Union Territory name.
year query No Year of the Act.
central query No 1 for the Central Acts India Code files inside a State community, 0 for the State’s own. Those carry central_act and an act_url to the Act itself, which we publish in full.
limit query No Rows per page, up to 500.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/listed-acts?jurisdiction=Assam&q=land&limit=1'

Open this call in the browser

Example response 200 OK
{
  "total": 75,
  "count": 1,
  "acts": [
    { "key": "1c970aa4",
      "title": "The Assam Acquisition of Land for Flood Control …",
      "jurisdiction": "Assam", "year": 1959, "act_number": "…",
      "central_act": null, "act_url": null,
      "document": "https://www.indiacode.gov.in/handle/123456789/494440" }
  ],
  "note": "India Code holds these as a record and a scanned document…"
}

Reference

GET /api/v1/meta

Corpus and enums

Counts for everything, every valid enum value, and the page ceiling for each endpoint. Call it first and you never have to guess a filter value.

Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/meta'

Open this call in the browser

Example response 200 OK
{
  "corpus": {
    "acts": 2246, "sections": 77072,
    "instruments": 35622, "instruments_with_text": 31563,
    "cpc_schedule_orders": 58, "cpc_schedule_rules": 728,
    "state_acts_listed_only": 8351,
    "acts_not_operating": 18,
    "judgments": 2667, "offences": 464, "cross_references": 45967
  },
  "corpus_date": "2026-08-28",
  "enums": { "instrument_kind": {…}, "jurisdiction": [...], "court": [...] },
  "limits": { … }
}
GET /api/v1/offences

Offence classification

The BNSS First Schedule: punishment, cognizable, bailable and triable-by for every offence under the Bharatiya Nyaya Sanhita. A section can be classified more than once, and both rows are returned.

Parameters
ParameterInRequiredDescription
section query No BNS section number.
cognizable query No Substring, e.g. non.
bailable query No Substring.
limit query No Rows per page.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/offences?section=103'

Open this call in the browser

Example response 200 OK
{
  "total": 2,
  "count": 2,
  "offences": [
    { "section": "103", "provision": "103(1)", "offence": "Murder",
      "punishment": "Death, or imprisonment for life…",
      "cognizable": "Cognizable", "bailable": "Non-bailable",
      "triable_by": "Court of Session" }
  ]
}
GET /api/v1/subjects

Subjects

The eighteen shelves and how many Acts are on each. Assigned by a rules-based classifier over the short title, with the Ministry as a weaker second signal. Not an official taxonomy, and the page says so.

Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/subjects'

Open this call in the browser

Example response 200 OK
{
  "count": 18,
  "results": [
    { "subject": "taxation", "name": "Tax", "acts": 161, "sections": 7805,
      "url": "https://indiacode.ecourtsindia.com/subject/taxation/",
      "api": "https://indiacode.ecourtsindia.com/api/v1/acts?subject=taxation" }
  ]
}
GET /api/v1/jurisdictions

Jurisdictions

Every State and Union Territory, with what India Code holds against what we publish. The two numbers are the point: the difference is the source’s, not ours.

Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/jurisdictions'

Open this call in the browser

Example response 200 OK
{
  "count": 37,
  "results": [
    { "name": "Assam", "slug": "assam",
      "acts_in_source": 1128, "acts_published": 0, "acts_listed_only": 1128,
      "sections": 0, "instruments": 48,
      "url": "https://indiacode.ecourtsindia.com/states/assam/" }
  ]
}
GET /api/v1/repeals

Repealed Acts

The 4,513 repealed Acts India Code lists, with what repealed them. Metadata only, as the source has it.

Parameters
ParameterInRequiredDescription
q query No Substring of the title.
year query No Year of the Act.
limit query No Rows per page.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/repeals?q=stamp&limit=1'

Open this call in the browser

Example response 200 OK
{
  "total": 24,
  "count": 1,
  "repeals": [
    { "title": "…", "cite": "44 of 1971", "repealed_by": "Act 38 of 1978",
      "year": 1971, "document": "https://www.indiacode.gov.in/handle/…" }
  ]
}
GET /api/v1/ordinances

Ordinances

With the Act each concerns. act and relation are our reading of the ordinance’s own title: India Code records no parent for any of them.

Parameters
ParameterInRequiredDescription
q query No Substring of the title.
year query No Year of the ordinance.
act query No Act id it concerns.
limit query No Rows per page.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/ordinances?limit=1'

Open this call in the browser

Example response 200 OK
{
  "total": 658,
  "count": 1,
  "ordinances": [
    { "title": "…", "year": 2026, "act": "…", "relation": "amends",
      "document": "https://www.indiacode.gov.in/handle/…" }
  ]
}
GET /api/v1/unenforced

Acts not operating

18 Acts on the statute book and doing nothing: Parliament passed some and never brought them into force, and the rest are spent. Neither group is repealed, so neither is in /repeals.

Parameters
ParameterInRequiredDescription
status query No not-enforced or spent.
limit query No Rows per page.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/unenforced?status=not-enforced'

Open this call in the browser

Example response 200 OK
{
  "total": 4,
  "count": 4,
  "acts": [
    { "title": "The Whistle Blowers Protection Act, 2011",
      "status": "not-enforced", "year": 2011,
      "document": "https://www.indiacode.gov.in/handle/…" }
  ]
}
GET /api/v1/forms

Income-tax forms

The prescribed forms, with a link to the PDF we host rather than one that expires.

Parameters
ParameterInRequiredDescription
rules query No 1962 or 2026.
q query No Substring of the number or description.
limit query No Rows per page.
offset query No Rows to skip.
Example request
curl 'https://indiacode.ecourtsindia.com/api/v1/forms?rules=1962&q=3ca'

Open this call in the browser

Example response 200 OK
{
  "total": 1,
  "count": 1,
  "forms": [
    { "no": "3CA", "rules": "1962", "description": "…",
      "pdf": "https://indiacode.ecourtsindia.com/income-tax-forms/3ca.pdf", "bytes": 9288 }
  ]
}

Other formats

The same provisions, for pipelines that do not want JSON. These sit at the site root, not under /api/v1.

PathReturns
/{act}/section/{number}.mdThe provision as Markdown, for language models and note-taking tools.
/{act}/section/{number}.xmlThe provision as Akoma Ntoso (OASIS LegalDocML).
/api/v1/openapi.jsonThe whole contract as OpenAPI 3.1, for client generation.
/data/acts.csvThe Act table as CSV. See /data/ for the rest.

Error handling

Errors are JSON, carry the same CORS headers as a success, and name the parameter at fault.

{
  "error": "unknown_param",
  "message": "This endpoint does not accept \"kinde\". A parameter that was silently ignored would return a page answering a different question.",
  "param": "kinde",
  "allowed": ["act", "has_text", "jurisdiction", "kind", "limit", "offset", "q", "section", "year"]
}
StatuserrorWhen
400unknown_paramA parameter that endpoint does not accept.
400invalid_valueA parameter of the right name and the wrong shape.
400unknown_jurisdictionNo such State or Union Territory.
400unknown_subjectNo such subject shelf.
404not_foundNo such Act, provision, instrument or Rule.
404no_such_endpointNo endpoint at that path. The body names the index.

Rate limits

There is no quota. No key means no per-key limit, and none is applied by address either. What there is instead is a page ceiling per endpoint, given in /api/v1/meta under limits, and an ask: if you want the whole corpus, take the CSV exports rather than paging the API a million times. They are the same data and it is faster for both of us.

Responses carry an ETag. Send it back as If-None-Match and you get a 304 with no body.

Code examples

cURL

curl 'https://indiacode.ecourtsindia.com/api/v1/cpc/order/vii/rule/11'

JavaScript

const r = await fetch('https://indiacode.ecourtsindia.com/api/v1/search?q=cheque+bounce&limit=5');
const { total, results } = await r.json();
console.log(total, results[0].title);

Python

import urllib.request, json

def get(path):
    with urllib.request.urlopen('https://indiacode.ecourtsindia.com/api/v1' + path) as r:
        return json.load(r)

# Every page of a collection, following next.
url = '/instruments?act=environment-act&limit=100'
while url:
    page = get(url.replace('https://indiacode.ecourtsindia.com/api/v1', ''))
    for row in page['instruments']:
        print(row['title'])
    url = page['next']

Workflows

  1. What does this provision say, and what have the courts made of it? One call: /api/v1/bns/section/103 returns the text, the offence classification, the judgments and the IPC provision it replaced.
  2. Everything made under one section. /api/v1/instruments?act=environment-act&section=3 returns the 1,050 instruments made under it. Not every provision has any: 15,297 of the 35,622 instruments carry no parent Act at all, because the source recorded none and their own enacting formula did not name one.
  3. The old provision for a new one, or the reverse. /api/v1/mappings?from=ipc&section=302. Check relation: official is the Department’s own correspondence and carries no score; near-identical, close and weak are measured here and each carries one.
  4. Order 7 Rule 11. /api/v1/cpc/order/7/rule/11, or search for the citation and get it as the first hit.
  5. Does this State Act exist? /api/v1/listed-acts?jurisdiction=Assam&q=land, then follow document to the Government’s copy.

Notes on the data

  • Everything comes out of our own database. The published site makes no external call at request time. The corpus is refreshed by re-running the harvest under review, and corpus_date in /meta says when that last happened.
  • Where a thing is inferred, it says so. An instrument’s parent Act is recorded where India Code recorded it and inferred where we read it out of the enacting formula. A transition mapping is official or measured. An Order of the CPC First Schedule reports complete.
  • Provisions with no text are still served. 3,601 provisions are published for their heading alone, because India Code holds no text for them. They carry indexable: false and an empty text rather than being hidden.
  • Nothing here is a substitute for the Gazette. Statutory text is reproduced from the enactments as published by the Government of India. For the State Acts under /listed-acts the Government’s PDF is the only authority, and we link to it rather than paraphrase it.

What changed

1.5.0: ?kind= on /search, taking a comma list; a kind that belongs to subordinate legislation is a 400 pointing at /instruments rather than an empty page. Articles of the Constitution answer at /{act}/article/{number} and carry the provision under article as well as section; asking for the wrong one of the two redirects rather than serving the same body at two addresses. /acts/{act} reports not_held where it holds no Schedules, no amendments or no text at all. Over-limit is answered with clamped instead of silently, a wrong method with 405 and an Allow header, and an unknown path under /api/v1 with JSON rather than the HTML 404 page. Rules of the CPC First Schedule gained .md and .xml.

1.4.0: The rest of the corpus. The CPC First Schedule is addressable at /cpc/schedule, /cpc/order/{order} and /cpc/order/{order}/rule/{rule} — 786 provisions that were on the site and not in the API, with /acts/cpc reporting 171 sections and no hint the Orders existed. New: /listed-acts, /repeals, /ordinances, /unenforced, /subjects, /jurisdictions, and ?subject= on /acts. /acts/{act} now returns its Schedules, its amending Acts, and a pointer to the First Schedule where there is one.

1.3.0: Judgments and the offence classification. Search parses a citation instead of matching it, so bns 103 and Order 7 Rule 11 answer directly rather than ranking.

1.2.0: ?text= searches the body of an instrument, not just its title. Instruments carry act_basis, saying whether the parent Act is the one India Code recorded or one we read off the enacting formula. Search answers the name a provision is known by, so "cheque bounce" finds section 138, and ranks a provision by how much of the corpus cites it.

1.1.0: Every list paginates and returns total. No parameter is silently ignored any more: ?page= is a 400, not a first page. in_force is a boolean everywhere. CORS on errors, on OPTIONS and on the Markdown export. ETags, and a 304 on If-None-Match.

Source and method. Compiled from the enactments of Parliament as published by the Government of India, and republished together with commentary and other original matter under section 52(1)(q)(ii) of the Copyright Act, 1957. Structured, cross-referenced and maintained by eCourtsIndia. This page is not a substitute for legal advice.