curl --request GET \
--url https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"actId": "IND_state_20326",
"sectionNumber": "23",
"citation": {
"citation": "The Maharashtra Value Added Tax Act, 2002., s. 23",
"citationShort": "Maharashtra Value Added Tax Act, 2002., s. 23",
"displayPath": "The Maharashtra Value Added Tax Act, 2002. / Chapter V. RETURNS AND ASSESSMENT, ETC. / s. 23",
"breadcrumb": [
{
"type": "chapter",
"num": "V",
"label": "Chapter V",
"name": "RETURNS AND ASSESSMENT, ETC."
}
]
},
"events": [
{
"effectId": "AMD_14b4a64b60_0013",
"action": "substituted",
"amendingAct": "Mah. 6 of 2011",
"amendingActKind": "state_act",
"amendingActYear": 2011,
"amendingSection": "3",
"effectiveDate": "2005-04-01",
"effectiveDateSource": "publisher",
"originalText": "four years",
"publisherNote": "These words were substituted for the words \"four years\" by Mah. 6 of 2011, s. 3(b)(ii), w.e.f. 1st April 2005.",
"appliedStatus": "not_applied",
"appliedNote": "The text this API serves is the publisher's published text. We do not edit it, so this amendment is not applied to it."
},
{
"effectId": "AMD_0421a7f328_0015",
"action": "substituted",
"amendingAct": "Mah. 6 of 2011",
"amendingActKind": "state_act",
"amendingActYear": 2011,
"amendingSection": "3",
"effectiveDate": "2005-04-01",
"effectiveDateSource": "publisher",
"publisherNote": "Sub-section (3A) was substituted by Mah. 6 of 2011, w.e.f. 1st April 2005, s. 3(c).",
"appliedStatus": "not_applied",
"appliedNote": "The text this API serves is the publisher's published text. We do not edit it, so this amendment is not applied to it."
}
],
"total": 43,
"hasMore": false,
"offset": 0,
"coverage": {
"publisherClaimsAmendments": true,
"structuredEventsHeld": 43,
"eventsWithDate": 9
},
"meta": {
"processingTimeMs": 597.2,
"creditsConsumed": 2
}
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}Every recorded amendment to one provision
The amendment record for a single provision: what changed, which Act changed it, which of that Act’s sections did so, when it took effect where the publisher records a date, and the wording it replaced where the publisher quotes it.
Cost: 2 credits. An empty history for a provision we hold IS the answer and
is charged; the coverage block tells you whether it is empty because nothing
changed or because we hold no parsed record.
Read appliedStatus on every event. It is not_applied throughout, because
the text this API serves is the publisher’s published text and we do not edit
it. That is a deliberate, stated position rather than an omission: you should
never have to infer currency from silence.
asOf returns a TIMELINE, not text. We hold amendment events and no
versioned text, so there is no honest way to render this provision as it stood
on a date. Passing asOf tells you how many recorded amendments had taken
effect by then, how many had not, and how many carry no date at all. isBounded
true means we hold no recorded event affecting that date, which is not the same
as there having been none.
Coverage is real and uneven. Across the corpus, 1,061 acts carry parsed amendment records and a further 840 carry a non-zero amendment count with no parseable footnote behind it. Of 32,808 records held, 52.8% carry an effective date and 35.3% quote the original wording.
curl --request GET \
--url https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"actId": "IND_state_20326",
"sectionNumber": "23",
"citation": {
"citation": "The Maharashtra Value Added Tax Act, 2002., s. 23",
"citationShort": "Maharashtra Value Added Tax Act, 2002., s. 23",
"displayPath": "The Maharashtra Value Added Tax Act, 2002. / Chapter V. RETURNS AND ASSESSMENT, ETC. / s. 23",
"breadcrumb": [
{
"type": "chapter",
"num": "V",
"label": "Chapter V",
"name": "RETURNS AND ASSESSMENT, ETC."
}
]
},
"events": [
{
"effectId": "AMD_14b4a64b60_0013",
"action": "substituted",
"amendingAct": "Mah. 6 of 2011",
"amendingActKind": "state_act",
"amendingActYear": 2011,
"amendingSection": "3",
"effectiveDate": "2005-04-01",
"effectiveDateSource": "publisher",
"originalText": "four years",
"publisherNote": "These words were substituted for the words \"four years\" by Mah. 6 of 2011, s. 3(b)(ii), w.e.f. 1st April 2005.",
"appliedStatus": "not_applied",
"appliedNote": "The text this API serves is the publisher's published text. We do not edit it, so this amendment is not applied to it."
},
{
"effectId": "AMD_0421a7f328_0015",
"action": "substituted",
"amendingAct": "Mah. 6 of 2011",
"amendingActKind": "state_act",
"amendingActYear": 2011,
"amendingSection": "3",
"effectiveDate": "2005-04-01",
"effectiveDateSource": "publisher",
"publisherNote": "Sub-section (3A) was substituted by Mah. 6 of 2011, w.e.f. 1st April 2005, s. 3(c).",
"appliedStatus": "not_applied",
"appliedNote": "The text this API serves is the publisher's published text. We do not edit it, so this amendment is not applied to it."
}
],
"total": 43,
"hasMore": false,
"offset": 0,
"coverage": {
"publisherClaimsAmendments": true,
"structuredEventsHeld": 43,
"eventsWithDate": 9
},
"meta": {
"processingTimeMs": 597.2,
"creditsConsumed": 2
}
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}Authorizations
API key issued from the developer dashboard. Pass as Authorization: Bearer vq_key_...
Path Parameters
1 - 200^[a-zA-Z0-9_-]+$"IND_state_20326"
1 - 40^[A-Za-z0-9().\- ]{1,40}$"23"
Query Parameters
Events per page.
1 <= x <= 50050
Zero-based offset.
x >= 00
Split the recorded amendments around a date (YYYY-MM-DD). Returns a timeline, never reconstructed text.
"2019-03-12"
Response
Successful Response
How to cite the thing this response is about.
Present on 99.90% of served acts. Where the publisher's own title carries a
defect, so does the citation: 10.4% of titles end in a period, which reads
as ... Act., s. 3, and 4.7% carry no year at all. Both are recorded
defects rather than reasons to withhold the field.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Events on THIS page.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
True when more events exist beyond this page. The list was previously unbounded by contract: bounded in practice, but with nothing telling a caller so.
Zero-based offset of this page.
A dated question answered with a TIMELINE, never with reconstructed text.
We hold amendment EVENTS and no versioned text, so there is no honest way to render this provision as it stood on a date. Returning current text under a date parameter would be a wrong answer shaped like a right one.
Show child attributes
Show child attributes
Was this page helpful?

