curl --request POST \
--url https://api.vaquill.ai/api/v1/in/acts/resolve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"citations": [
"u/s 302 IPC",
"Section 138 of the Negotiable Instruments Act",
"Art. 21 Constitution"
]
}
'import requests
url = "https://api.vaquill.ai/api/v1/in/acts/resolve"
payload = { "citations": ["u/s 302 IPC", "Section 138 of the Negotiable Instruments Act", "Art. 21 Constitution"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
citations: [
'u/s 302 IPC',
'Section 138 of the Negotiable Instruments Act',
'Art. 21 Constitution'
]
})
};
fetch('https://api.vaquill.ai/api/v1/in/acts/resolve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vaquill.ai/api/v1/in/acts/resolve"
payload := strings.NewReader("{\n \"citations\": [\n \"u/s 302 IPC\",\n \"Section 138 of the Negotiable Instruments Act\",\n \"Art. 21 Constitution\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"results": [
{
"input": "u/s 302 IPC",
"status": "ambiguous",
"candidates": [
{
"actId": "IND_central_20062",
"citation": "The Bharatiya Nyaya Sanhita, 2023, s. 302",
"title": "The Bharatiya Nyaya Sanhita, 2023",
"sectionNumber": "302",
"sectionTitle": "Uttering words, etc., with deliberate intent to wound religious feelings of any person",
"year": 2023,
"actStatus": "in_force",
"category": "central",
"state": "central"
},
{
"actId": "IND_REP_659_1860",
"citation": "The Indian Penal Code, 45 of 1860 (Rep., Act 45 of 2023), s. 302",
"title": "The Indian Penal Code, 45 of 1860 (Rep., Act 45 of 2023)",
"sectionNumber": "302",
"sectionTitle": "Punishment for murder . — Whoever commits murder shall be punished with death, or 1[imprisonment for life], and shall also be liable to fine",
"year": 1860,
"actStatus": "in_force",
"category": "central",
"state": "central",
"note": "Replaced by the Bharatiya Nyaya Sanhita, 2023 with effect from 1 July 2024, and still governs offences committed before that date."
}
],
"reason": "This citation matches 2 provisions across 2 enactments, and picking one would be a guess. Both the pre-2024 code and its 2023 replacement are live law for conduct on either side of 1 July 2024; send `asAtDate` to narrow. Send `state` or the act's year to narr…",
"parsed": {
"unit": "section",
"section": "302",
"subProvisions": [],
"actToken": "IPC",
"pinpoint": "302"
},
"duplicatesCollapsed": 2
}
],
"count": 1,
"resolvedCount": 0,
"meta": {
"processingTimeMs": 835.9,
"creditsConsumed": 2
}
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}{
"detail": "Insufficient API credits."
}Resolve up to 50 citations
The same resolver over a list, for when you would otherwise loop.
Cost: 2 credits per DISTINCT citation. Batching buys a round trip, never a discount. Duplicates are collapsed before pricing, so sending the same citation twice is charged once. Each citation is refunded individually when we fail on it; one citation failing never refunds or voids the others.
Up to 50 distinct citations, and up to 500 before deduplication. Unknown fields on the body are refused rather than ignored.
curl --request POST \
--url https://api.vaquill.ai/api/v1/in/acts/resolve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"citations": [
"u/s 302 IPC",
"Section 138 of the Negotiable Instruments Act",
"Art. 21 Constitution"
]
}
'import requests
url = "https://api.vaquill.ai/api/v1/in/acts/resolve"
payload = { "citations": ["u/s 302 IPC", "Section 138 of the Negotiable Instruments Act", "Art. 21 Constitution"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
citations: [
'u/s 302 IPC',
'Section 138 of the Negotiable Instruments Act',
'Art. 21 Constitution'
]
})
};
fetch('https://api.vaquill.ai/api/v1/in/acts/resolve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vaquill.ai/api/v1/in/acts/resolve"
payload := strings.NewReader("{\n \"citations\": [\n \"u/s 302 IPC\",\n \"Section 138 of the Negotiable Instruments Act\",\n \"Art. 21 Constitution\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"results": [
{
"input": "u/s 302 IPC",
"status": "ambiguous",
"candidates": [
{
"actId": "IND_central_20062",
"citation": "The Bharatiya Nyaya Sanhita, 2023, s. 302",
"title": "The Bharatiya Nyaya Sanhita, 2023",
"sectionNumber": "302",
"sectionTitle": "Uttering words, etc., with deliberate intent to wound religious feelings of any person",
"year": 2023,
"actStatus": "in_force",
"category": "central",
"state": "central"
},
{
"actId": "IND_REP_659_1860",
"citation": "The Indian Penal Code, 45 of 1860 (Rep., Act 45 of 2023), s. 302",
"title": "The Indian Penal Code, 45 of 1860 (Rep., Act 45 of 2023)",
"sectionNumber": "302",
"sectionTitle": "Punishment for murder . — Whoever commits murder shall be punished with death, or 1[imprisonment for life], and shall also be liable to fine",
"year": 1860,
"actStatus": "in_force",
"category": "central",
"state": "central",
"note": "Replaced by the Bharatiya Nyaya Sanhita, 2023 with effect from 1 July 2024, and still governs offences committed before that date."
}
],
"reason": "This citation matches 2 provisions across 2 enactments, and picking one would be a guess. Both the pre-2024 code and its 2023 replacement are live law for conduct on either side of 1 July 2024; send `asAtDate` to narrow. Send `state` or the act's year to narr…",
"parsed": {
"unit": "section",
"section": "302",
"subProvisions": [],
"actToken": "IPC",
"pinpoint": "302"
},
"duplicatesCollapsed": 2
}
],
"count": 1,
"resolvedCount": 0,
"meta": {
"processingTimeMs": 835.9,
"creditsConsumed": 2
}
}{
"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_...
Body
Up to 50 citations, priced per citation.
Citation strings, as a lawyer would type them.
1[ "u/s 302 IPC", "Section 138 of the Negotiable Instruments Act", "Art. 21 Constitution" ]
Narrow to one jurisdiction. Required for a State-universal title.
andaman-and-nicobar-islands, andaman-nicobar, andhra-pradesh, arunachal-pradesh, assam, bihar, central, chandigarh, chhattisgarh, dadra-and-nagar-haveli-and-daman-and-diu, dadra-nagar-haveli, delhi, goa, gujarat, haryana, himachal-pradesh, jammu-and-kashmir, jammu-kashmir, jharkhand, karnataka, kerala, ladakh, lakshadweep, madhya-pradesh, maharashtra, manipur, meghalaya, mizoram, nagaland, odisha, puducherry, punjab, rajasthan, sikkim, tamil-nadu, telangana, tripura, uttar-pradesh, uttarakhand, west-bengal "maharashtra"
The date the conduct or document belongs to, as YYYY-MM-DD. This is how a caller says which side of the 2023 recodification they mean: without it, a criminal section number resolves to BOTH the old code and its replacement, because both are live law.
"2019-05-01"
Was this page helpful?

