curl --request GET \
--url https://api.vaquill.ai/api/v1/us/statutes/coverage \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/api/v1/us/statutes/coverage"
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/us/statutes/coverage', 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/us/statutes/coverage"
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))
}{
"data": {
"corpusTypes": [
{
"token": "USC",
"description": "United States Code (federal statutes)",
"scope": "federal",
"browsable": true
},
{
"token": "REGULATION",
"description": "State administrative regulations",
"scope": "state",
"browsable": true
},
{
"token": "AGENCY_GUIDANCE",
"description": "Sub-regulatory agency guidance across named sources",
"scope": "federal",
"browsable": false,
"sourceScopeNotes": {
"cms_iom": "Held: the 204 chapter, appendix and exhibit documents CMS publishes across its Medicare Internet-Only Manuals ... Not held, and these are the publisher's own gaps rather than ours: Pub. 100-12 (State Medicaid Manual), Pub. 100-13 (Medicaid CHIP) and Pub. 100-23 (Payment Error Rate Measurement) publish no chapters at all ..."
}
}
],
"jurisdictions": [
{
"code": "federal",
"name": "Federal (USC + CFR)",
"kind": "federal",
"sectionCount": 812553,
"hasData": true,
"corpora": {
"CFR": 491612,
"USC": 212042,
"FEDERAL_REGISTER": 102861,
"EXECUTIVE_ACTION": 3599,
"AGENCY_GUIDANCE": 2510,
"FEDERAL_RULES": 526,
"CONSTITUTION": 74
}
},
{
"code": "wa",
"name": "Washington",
"kind": "state",
"sectionCount": 140326,
"hasData": true,
"corpora": {
"STATE": 89005,
"REGULATION": 51142,
"STATE_CONSTITUTION": 179
}
}
],
"totalSections": 2937552,
"stateCountWithData": 49
},
"meta": {
"processingTimeMs": 5401.2,
"creditsConsumed": 0
}
}{
"detail": "Invalid or missing API key."
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
]
}Coverage matrix by jurisdiction and corpusType
Self-describing coverage matrix. Returns a legend of every corpusType token (what it contains and whether it is federal or state-scoped) plus, for each jurisdiction, the per-corpusType ingested DOCUMENT counts in corpora (one per section or document, not per retrieval passage; totalPassages in the same response IS the passage count). Use it to learn exactly what is queryable where before calling /us/statutes/search: read a jurisdiction’s corpora keys, then pass one as corpusType (paired with state for state-scoped corpora). Each legend entry’s browsable says whether GET /us/statutes/divisions can also walk that corpus as a tree.
It reports what we hold, not how recently it was refreshed. For the age of any source, call GET /boards: it is free, needs no credits, and carries lastRetrievedAt and cadence for every tracked source. Read it alongside the counts here so a section count carries an age. It records when we last CHECKED, not when the law last changed, and it is not a claim that the law is current as of that date. Where a publisher states its own currency, that rides on each section as currentThrough.
Free. Requires an API key and is rate-limited, but costs no credits.
State session laws (acts as enacted) are at /us/session-laws. Where we hold any for a jurisdiction, its sessionLaws block says which sessions are complete or partial, how many laws we serve, how many we withhold (withheldCount: in our registry, text not shown, each with a stated reason), the expected total and open gaps, and the series, instrumentTypes and approval-date span that exist (the values GET /us/session-laws/list accepts). A jurisdiction we hold no session laws for has no block. Which jurisdictions have one changes as we collect more, so read it here and do not assume it from a list. This is the one place session-law coverage is served: check it before you list, then read the laws at /us/session-laws.
curl --request GET \
--url https://api.vaquill.ai/api/v1/us/statutes/coverage \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/api/v1/us/statutes/coverage"
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/us/statutes/coverage', 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/us/statutes/coverage"
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))
}{
"data": {
"corpusTypes": [
{
"token": "USC",
"description": "United States Code (federal statutes)",
"scope": "federal",
"browsable": true
},
{
"token": "REGULATION",
"description": "State administrative regulations",
"scope": "state",
"browsable": true
},
{
"token": "AGENCY_GUIDANCE",
"description": "Sub-regulatory agency guidance across named sources",
"scope": "federal",
"browsable": false,
"sourceScopeNotes": {
"cms_iom": "Held: the 204 chapter, appendix and exhibit documents CMS publishes across its Medicare Internet-Only Manuals ... Not held, and these are the publisher's own gaps rather than ours: Pub. 100-12 (State Medicaid Manual), Pub. 100-13 (Medicaid CHIP) and Pub. 100-23 (Payment Error Rate Measurement) publish no chapters at all ..."
}
}
],
"jurisdictions": [
{
"code": "federal",
"name": "Federal (USC + CFR)",
"kind": "federal",
"sectionCount": 812553,
"hasData": true,
"corpora": {
"CFR": 491612,
"USC": 212042,
"FEDERAL_REGISTER": 102861,
"EXECUTIVE_ACTION": 3599,
"AGENCY_GUIDANCE": 2510,
"FEDERAL_RULES": 526,
"CONSTITUTION": 74
}
},
{
"code": "wa",
"name": "Washington",
"kind": "state",
"sectionCount": 140326,
"hasData": true,
"corpora": {
"STATE": 89005,
"REGULATION": 51142,
"STATE_CONSTITUTION": 179
}
}
],
"totalSections": 2937552,
"stateCountWithData": 49
},
"meta": {
"processingTimeMs": 5401.2,
"creditsConsumed": 0
}
}{
"detail": "Invalid or missing API key."
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Insufficient API credits.",
"errors": [
{
"loc": [
"body",
"corpusType"
],
"msg": "Input should be 'USC', 'CFR' or 'STATE'",
"type": "literal_error"
}
]
}Authorizations
API key issued from the developer dashboard. Pass as Authorization: Bearer vq_key_... (preferred).
Query Parameters
Return only this jurisdiction: a 2-letter US state code (one of the 52 supported) or federal. Case-insensitive. Omit for every jurisdiction. The unfiltered matrix runs to about a megabyte, so pass this when you are asking about one place. totalSections and stateCountWithData stay corpus-wide.
federal, al, ak, as, az, ar, ca, co, ct, de, dc, fl, ga, gu, hi, id, il, in, ia, ks, ky, la, me, md, ma, mi, mn, ms, mo, mt, ne, nv, nh, nj, nm, ny, nc, nd, mp, oh, ok, or, pa, pr, ri, sc, sd, tn, tx, ut, vt, vi, va, wa, wv, wi, wy "ca"
Response
Coverage legend plus per-jurisdiction corpusType counts.
What GET /us/statutes/coverage returns: the matrix under data.
Declared because the route used to return a hand-built dict with no
response_model, so its published schema was {}. Every field was
discoverable only if the example happened to show it, and the MCP tool and
generated clients built from the document got no types at all for the one
endpoint that exists to be read before anything else.
Response for GET /us/statutes/coverage.
A self-describing matrix: a legend of every corpusType token plus, for
each jurisdiction, the per-corpusType ingested-document counts. Use it to learn
exactly what is queryable where before calling /us/statutes/search.
Show child attributes
Show child attributes
meta on a free discovery endpoint.
Show child attributes
Show child attributes
Was this page helpful?

