curl --request GET \
--url https://api.vaquill.ai/api/v1/in/acts/{act_id}/amendments \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/api/v1/in/acts/{act_id}/amendments"
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}/amendments', 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}/amendments"
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",
"title": "The Maharashtra Value Added Tax Act, 2002.",
"totalFootnotes": 3,
"footnotes": [
{
"sectionNumber": "1",
"sectionTitle": "Short title, extent and commencement",
"footnoteId": 1,
"footnoteText": "This sub-section was substituted by Mah. 14 of 2005, s. 2.",
"footnoteType": "substitution",
"byAct": "Mah. 14 of 2005"
},
{
"sectionNumber": "10",
"sectionTitle": "Sales Tax Authorities",
"footnoteId": 1,
"footnoteText": "These words were substituted for the words \"State Government may appoint\" by Mah. 8 of 2021, s. 22(1).",
"footnoteType": "substitution",
"byAct": "Mah. 8 of 2021",
"originalText": "State Government may appoint"
}
],
"typeCounts": {
"substitution": 3
},
"page": 1,
"pageSize": 3,
"hasMore": true,
"meta": {
"processingTimeMs": 448.9,
"creditsConsumed": 5
}
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}Get amendment history
Get the amendment history (footnotes) for an act.
Authentication: API key via Authorization: Bearer vq_key_...
Cost: 5 credits
Returns footnotes including substitutions, insertions, omissions, and notes. Paginated — max 200 per request.
curl --request GET \
--url https://api.vaquill.ai/api/v1/in/acts/{act_id}/amendments \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/api/v1/in/acts/{act_id}/amendments"
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}/amendments', 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}/amendments"
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",
"title": "The Maharashtra Value Added Tax Act, 2002.",
"totalFootnotes": 3,
"footnotes": [
{
"sectionNumber": "1",
"sectionTitle": "Short title, extent and commencement",
"footnoteId": 1,
"footnoteText": "This sub-section was substituted by Mah. 14 of 2005, s. 2.",
"footnoteType": "substitution",
"byAct": "Mah. 14 of 2005"
},
{
"sectionNumber": "10",
"sectionTitle": "Sales Tax Authorities",
"footnoteId": 1,
"footnoteText": "These words were substituted for the words \"State Government may appoint\" by Mah. 8 of 2021, s. 22(1).",
"footnoteType": "substitution",
"byAct": "Mah. 8 of 2021",
"originalText": "State Government may appoint"
}
],
"typeCounts": {
"substitution": 3
},
"page": 1,
"pageSize": 3,
"hasMore": true,
"meta": {
"processingTimeMs": 448.9,
"creditsConsumed": 5
}
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
],
"code": "insufficient_credits",
"type": "https://www.vaquill.ai/docs/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"requestId": "8d32789e-7b27-44f7-9523-424596e7a929",
"retryable": false,
"retryAfterSeconds": 30,
"actId": "USC_99_9999",
"reason": "not_in_registry",
"didYouMean": [
"<string>"
]
}Authorizations
API key issued from the developer dashboard. Pass as Authorization: Bearer vq_key_... (preferred).
Headers
Optional. 16 to 255 visible ASCII characters (a UUIDv4 is ideal). A retry with the same key and the same request replays the original 2xx response for 24 hours without charging again. The same key with a different request is rejected. Scope is the API key, method, path and body.
16 - 255^[\x21-\x7e]+$"3f9c2a1e-7b44-4d0a-9c1e-5a6b7c8d9e0f"
Path Parameters
Act identifier, as returned by /acts/search, /acts/list or /acts/resolve, e.g. IND_central_20062 (the Bharatiya Nyaya Sanhita, 2023). Surrounding whitespace, quotes, backticks, invisible characters, a trailing period and double percent-encoding are removed when the id as sent matches nothing; the response then carries resolvedFrom.
An act NAME or citation (Indian Penal Code, IPC, The Companies Act, 2013) is not resolved here. It returns 404 with reason: "act_name_or_citation" and suggestedRequest, the call that finds the id. A misspelt id returns 404 with the real ids in didYouMean.
1 - 200^[^/\\\x00-\x1f]+$"IND_state_20326"
Query Parameters
Keep only footnotes attached to this section, written exactly as the publisher does. Alphanumeric suffixes are part of the number, not a sub-provision: 498A is one section, not section 498 clause A.
40^[A-Za-z0-9().\- ]{1,40}$"23"
Amendment action class. Served in the NOMINAL spelling; the corpus stores the verbal form (substituted) and either is accepted. Values: substitution, insertion, omission, renumbering, addition, repeal, deletion, adaptation, amendment, note.
substitution, insertion, omission, renumbering, addition, repeal, deletion, adaptation, amendment, note "substitution"
1-based page number.
x >= 11
Results per page (1-200).
1 <= x <= 200100
Response
Successful Response
Footnotes on THIS page, not in the act. Paging is by page/pageSize, so this equals pageSize on a full page.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Null when the act is exactly the actId you sent. Otherwise how your input was matched after copy damage (whitespace, quotes, a trailing period) was removed.
Show child attributes
Show child attributes
True when a further page of footnotes exists.
What this call cost and how long it took.
🔴 Added 2026-09-06. Five of the six original routes returned NO statement
of what they billed: /text (3 credits), /amendments (5), /list (1),
/filters (0) and /corresponding-provisions (1). The house rule on the
US surface is that creditsConsumed is the CONTRACT and the list price is
not, and it matters most exactly where refunds happen -- /text refunds on
a missing act, /corresponding-provisions refunds when a mapping does not
exist yet. Without this field a caller cannot tell a refunded call from a
charged one, and has to reconcile against the ledger to find out.
Show child attributes
Show child attributes
Was this page helpful?

