curl --request GET \
--url https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/references \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/references"
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}/references', 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}/references"
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_17068",
"sectionNumber": "79",
"citation": {
"citation": "The Factories Act, 1948, s. 79",
"citationShort": "Factories Act, s. 79",
"displayPath": "The Factories Act, 1948 / Chapter VI. ``` / s. 79",
"breadcrumb": [
{
"type": "chapter",
"num": "VI",
"label": "Chapter VI",
"name": "```"
}
]
},
"acts": [
{
"title": "Industrial Disputes Act, 1947",
"actId": "INC_554437",
"resolved": true
}
],
"sections": [
{
"sectionNumber": "2"
},
{
"sectionNumber": "81"
}
],
"totalActs": 1,
"totalSections": 4,
"truncated": false,
"matchBasis": "publisher_title",
"note": "Edges are matched on the act's TITLE as the publisher wrote it, because that is what the corpus stores. A citing document that spelled the title differently is not found, and the publisher's own line breaks make this measurable: one act can appear as two dist…",
"meta": {
"processingTimeMs": 3905.5,
"creditsConsumed": 2
}
}{
"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>"
]
}What this provision points at
Outbound citations: the other enactments this provision names, and the sections of its own act it cross-refers to.
Cost: 2 credits. An empty result for a provision we hold IS the answer and is charged; a provision we do not hold is refunded.
Act references are resolved to an actId where the title names something we
serve, and returned with resolved: false where it does not. That is the
honest split: the publisher names acts we may not hold, and a null id is a
coverage fact rather than a parse failure.
This route takes no query parameters and is not paged: one provision’s own
outbound edges are a short list. totalActs and totalSections are the full
counts, and truncated says whether the row cap cut either list.
curl --request GET \
--url https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/references \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/api/v1/in/acts/{act_id}/sections/{section_number}/references"
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}/references', 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}/references"
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_17068",
"sectionNumber": "79",
"citation": {
"citation": "The Factories Act, 1948, s. 79",
"citationShort": "Factories Act, s. 79",
"displayPath": "The Factories Act, 1948 / Chapter VI. ``` / s. 79",
"breadcrumb": [
{
"type": "chapter",
"num": "VI",
"label": "Chapter VI",
"name": "```"
}
]
},
"acts": [
{
"title": "Industrial Disputes Act, 1947",
"actId": "INC_554437",
"resolved": true
}
],
"sections": [
{
"sectionNumber": "2"
},
{
"sectionNumber": "81"
}
],
"totalActs": 1,
"totalSections": 4,
"truncated": false,
"matchBasis": "publisher_title",
"note": "Edges are matched on the act's TITLE as the publisher wrote it, because that is what the corpus stores. A citing document that spelled the title differently is not found, and the publisher's own line breaks make this measurable: one act can appear as two dist…",
"meta": {
"processingTimeMs": 3905.5,
"creditsConsumed": 2
}
}{
"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_17068"
Section number as the publisher writes it, e.g. 302 or 498A. Alphanumeric suffixes are part of the number, not a sub-provision: 498A is one section, not section 498 clause A.
When the number as sent matches nothing, common spellings are tried: a s. / Sec. / Section prefix, 498-A or 498 A or 498a for 498A, and a trailing sub-provision such as 302(1), which serves the whole section. A match is served only when exactly one stored number fits, and the response carries resolvedFrom. A miss returns 404 with reason and the act's nearest numbers in didYouMean.
1 - 40^[^/\\\x00-\x1f]{1,40}$"79"
Response
Successful Response
How to cite the thing this response is about.
Built from the publisher's own title, so where that title carries a defect
so does the citation: some titles end in a period, which reads as
... Act., s. 3, and some carry no year at all. Those are recorded defects
rather than reasons to withhold the field. GET /acts/coverage publishes
how many served acts carry a citation, as depth.actsWithCitation.
Show child attributes
Show child attributes
Distinct enactments this provision names, before the cap on rows. acts is shorter than this when the provision names more than the cap; truncated says so.
Distinct own-act sections cross-referred, before the cap on rows.
True when either list was cut to the row cap. This route is not paged: one provision's own outbound edges are a short list, and the cap exists only so a malformed passage cannot return unbounded output.
Show child attributes
Show child attributes
Other enactments this provision names.
Show child attributes
Show child attributes
Sections of this act it cross-refers to.
Show child attributes
Show child attributes
How your act_id or section number was matched, when it did not match exactly as sent. Null when it did.
Show child attributes
Show child attributes
Was this page helpful?

