Get metadata for many statute sections
Metadata for up to 50 sections in one call.
Cost: 2 credits per section returned. Identifiers with no match are refunded, so a batch of 50 ids that resolves 47 costs 94 credits, not 100. Batching is a round-trip and latency win, not a discount. An input that is not a citation (an unknown id such as NOPE1, punctuation, an over-long string) is a plain miss and costs nothing; only a real citation sent in place of an id pays the /resolve price on top, resolved or not.
The response preserves the order of actIds and reports misses separately in notFound, so results can be zipped back onto the ids that produced them.
Take ids from a /us/statutes/search response, do not build them from a citation. An act_id looks derivable and is not: Tex. Property Code § 93.005 is STATE_TX_Cpr_C93_S93.005, and the Cpr code segment exists only in the data. Assembling ids works for a few jurisdictions whose hierarchy happens to sit in the citation, which makes the failures look like missing coverage rather than like wrong ids.
So every miss also comes back in notFoundDetail saying which it was: assembled_id with the real ids in didYouMean, or not_in_corpus when nothing matching exists (check /us/statutes/coverage for the jurisdiction before concluding a section is absent). The diagnosis is free and never charged. To go from a citation rather than a guess, use /us/statutes/resolve.
Use /us/statutes/section/{actId}/body for full text; this endpoint returns metadata and source links only.
Bounded rows. A heavily amended section (26 U.S.C. 1) carries hundreds of references and a credit line of tens of thousands of characters. Each row keeps the first 50 items of every long list and the first 4,000 characters of history and committeeNote. A row that was cut carries responseBounds (truncated, and per field the total, what was returned and nextOffset); a row that was not cut omits it. The whole record is one call away: GET /us/statutes/section/{actId}?full=true.
Request
- Base URLhttps://api.vaquill.ai
- Auth
- HTTP bearer
- or API key in header X-API-Key
- TypeScriptA function with typed inputs. Its response is checked against the schema.
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. The stored response body is a query-derived cache controlled by the account's data retention setting cacheQueryDerivedData: when it is false the body is never stored and a retry answers 409 idempotency_replay_unavailable, without charging again.
Request body
Example request
{
"actIds": [
"USC_T42_C21_S1983",
"USC_T42_C21_S1981a"
]
}Response
Sections found, plus any ids that did not resolve.
Example response
{
"sections": [
{
"source": "sct",
"body": "(a) If within a reasonable time after written or oral notice...",
"bodyUnavailable": true,
"bodyUnavailableReason": "image_only_source",
"bodyNote": "fetch_failed",
"matchContexts": [
{
"text": "(a) An employer shall not retaliate against an employee who files a complaint",
"highlights": [
[
7,
15
],
[
26,
35
]
]
}
],
"renumberedTo": "self:4651",
"renumberedToLabel": "section 10105 of Title 34",
"transferredTo": "34:10105",
"transferredToLabel": "section 10105 of Title 34",
"issueDate": "1999-05-25",
"statutoryAuthority": [
{
"display": "15 U.S.C. 78o",
"section": "78o",
"title": 15,
"type": "usc"
}
],
"implementingRegulations": [
{
"cfrTitle": 17,
"display": "17 CFR Part 240",
"part": "240",
"partName": "General Rules"
}
],
"rescindedOn": "2016-07-01",
"pendingAdoptions": [
{
"agency": "Department of Financial Services",
"effectiveDate": "2026-09-23",
"idNo": "DFS-23-26-00013-A",
"issueDate": "2026-09-23",
"scope": "part"
}
],
"adoptedAfterCurrentThrough": true,
"responseBounds": {
"truncated": true,
"fields": [
{
"field": "publicLaws",
"unit": "items",
"total": 190,
"returned": 50,
"nextOffset": 50
}
]
},
"effectiveDate": "2002-11-25",
"effectiveDateRaw": "September 8, 1916",
"historyEffectiveDate": "2009-06-19",
"priorEffectiveDates": [
"2004-12-17",
"2012-11-01"
],
"pendingAmendments": [
{
"id": "FRULES_FRCP_R26_P2027",
"status": "approved_by_standing_committee",
"cycle": 2027,
"effectiveDate": "2027-12-01",
"commentPeriodEnd": "2026-02-16",
"sourceUrl": "https://www.uscourts.gov/rules-policies/pending-rules-and-forms-amendments",
"textComplete": true,
"commentDocketIds": [
"USC-RULES-CV-2025-0004"
]
}
],
"abstract": "This regulation extends time-limited tolerances for pesticides.",
"agencies": [
"Environmental Protection Agency"
],
"agencySlugs": [
"environmental-protection-agency"
],
"topics": [
"Environmental protection",
"Pesticides and pests"
],
"documentTypeLabel": "Rule",
"documentSubtype": "Proclamation",
"action": "Final rule.",
"president": "George W. Bush",
"signingDate": "2026-04-02",
"executiveOrderNumber": "14179",
"proclamationNumber": "10886",
"instrumentNumberSource": "derived_from_text",
"datesText": "This regulation is effective December 14, 2001.",
"frVolume": 66,
"frStartPage": 64768,
"frEndPage": 64775,
"wordCount": 6271,
"issuingAgency": "Pollution Control Board",
"adoptingCitations": [
"37 Ill. Reg. 16539"
],
"lawImplemented": "Section 4656.1, Public Resources Code",
"lastAmendedDate": "2013-10-04",
"amendmentNote": "Amended at 37 Ill. Reg. 16539, effective October 4, 2013",
"currencyYear": 2025,
"reviewDate": "11/1/2028",
"originalEnactmentDate": "1934-06-27",
"originalEnactmentDateRaw": "June 27, 1934",
"releaseDate": "2018-06-14",
"documentNumber": "21-CA-211066",
"caseName": "Dunn-Edwards Corp.",
"forum": "Administrative Proceeding",
"court": "U.S. District Court for the District of Massachusetts",
"relatedDocuments": [
"Consent Order",
"Stipulation"
],
"settlementAmount": "$16,500",
"requesters": [
"Preece, Inc."
],
"program": "Old-Age and Survivors Insurance",
"languageCode": "es",
"volume": 1,
"articleNumber": "1",
"articleName": "Declaration of Rights",
"ruleSetCode": "NDSUPCTADMINR",
"edition": "2025",
"relatedCitations": [
"RCW 28A.150.290"
],
"supersessionActions": {
"modifies": [
"Rev. Proc. 2011-47"
]
},
"subtitle": "11",
"subtitleName": "AIR QUALITY",
"publisherKey": "430000000310400000000000000000000",
"versionId": "11948",
"referencedShortTitles": [
"Driftnet Modernization and Bycatch Reduction Act"
],
"subjectNumber": "47",
"audience": "All Persons Engaged in Marketing",
"sourceCharStart": 263194,
"sourceCharEnd": 264198,
"matchSegment": "note",
"matchNoteYear": 1993,
"alternateCitations": [
"4 L.P.R.A. § 2077"
],
"expirationDate": "2029-03-01",
"expirationDateRaw": "03-01-2029",
"sourcePageStart": 114,
"sourcePageEnd": 114,
"displayLabel": "MPEP § 2165.03",
"publicationDate": "2001-12-14",
"topLevelTitle": "Title 9: Criminal",
"externalUrl": "https://www.mass.gov/regulations/240-CMR-200-licensure-of-cosmetologists",
"sourceUrl": "https://www.mass.gov/regulations/240-CMR-200-licensure-of-cosmetologists"
}
],
"notFoundDetail": [
{
"reason": "assembled_id",
"didYouMean": [
"STATE_CO_T38_A12_P1_S38-12-103"
]
}
],
"resolved": [
{
"input": "26 U.S.C. § 1",
"actId": "USC_T26_C1_S1",
"via": "citation",
"subsection": "(h)(11)",
"matchLevel": "container",
"container": {
"kind": "chapter",
"label": "U.S. Const. art. III",
"childCount": 12,
"children": [
{
"actId": "CONST_US_A3_S1",
"citation": "U.S. Const. art. III, § 1",
"status": "in_force"
}
]
},
"repair": {
"kind": "code_name",
"cited": "Jud. Ct. Acts Law",
"interpretedAs": "N.Y. Judiciary Law § 475",
"alternatives": [
{
"actId": "STATE_NY_FCT_S475",
"citation": "N.Y. Fam. Ct. Act § 475"
}
]
},
"registerReference": {
"citation": "36 Pa. Bull. 510",
"state": "il",
"kind": "page",
"ruleCount": 2
}
}
],
"processingTimeMs": 240.5,
"creditsConsumed": 4
}Changes
No recorded changes to this operation across all 1 revision of this API.