Resolve many citations at once
Changed onResolve up to 50 Bluebook citations in one call: the batch form of GET /us/statutes/resolve, with the same verdict per citation (matchLevel, missReason, pinpoint). Use it to check the citations in a brief, a memo or a model's output rather than making a call per citation.
Every input gets an entry, in order. An unresolved citation appears with resolved: false, never as an omission, so you can tell which of thirty citations failed. Duplicates are collapsed before pricing, so the same citation twice costs once and returns one entry.
Cost: 2 credits per citation, the same as resolving them one at a time; batching buys round trips, not a discount. Unresolved citations are charged. Refunded: citations that failed on a backend error, could not be read or name no jurisdiction (missReason malformed or ambiguous_jurisdiction). creditsConsumed reports what was billed.
Scope the whole batch with state or corpusType when every citation belongs to one jurisdiction or corpus (22 CCR 76227 is California and 8 CCR 1206-2 is Colorado; the acronym alone cannot say which). Omit both for a batch that spans jurisdictions. The batch spends at most about 20 seconds locating pinpoints; a citation past that budget resolves normally with a pinpointNote.
A citation to a STATE session law (an act as enacted, for example CHAPTER 2025-12 or S.F.No. 1552) names no code section, so resolved stays false and section stays null. The law is described in sessionLaw, beside matchedCorpus: "session_law", with an href to read it under /us/session-laws, and enough to answer what it is and when it took effect without a second call: title, billNumber, approvedDate, effectiveFirst and effectiveLast (null when the publisher prints no effective date), enactmentOutcome and sourceUrl, the government publisher's own text. A citation naming several laws comes back ambiguous with every candidate and none chosen for you. A state scope applies to session laws; a corpusType scope excludes them. No extra charge, and a citation that resolves to a section is never checked against session laws. A citation that names no state is matched against every state's laws, so at most 25 of them are checked per call: the others carry no sessionLaw block, which says nothing about whether the law exists. Name the state, or send the rest in another call.
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 works). Repeating the same request with the same key replays the original 2xx response for 24 hours without charging again. The same key on a different request is rejected. With the account's cacheQueryDerivedData retention setting off, no body is stored and a retry answers 409 idempotency_replay_unavailable, still without a second charge.
Request body
Example request
{
"citations": [
"42 U.S.C. 1983",
"16 C.F.R. 444.1",
"Cal. Civ. Code 1950.5"
],
"state": "ca",
"corpusType": "REGULATION"
}Response
One verdict per submitted citation, in order.
Example response
{
"results": [
{
"section": {
"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"
},
"citationOutsideFilters": {
"actId": "USC_T42_C21_S1983",
"citation": "42 U.S.C. § 1983 (2026)",
"title": "Civil action for deprivation of rights",
"state": "federal",
"corpusType": "USC",
"excludedBy": [
"state"
]
},
"sessionLaw": {
"status": "matched",
"sessionLawId": "SSL_MN_2025R_G_Y2025_C1",
"citation": "CHAPTER 1--S.F.No. 1552",
"jurisdiction": "mn",
"session": {
"code": "2025R",
"label": "2025 Regular Session",
"type": "regular",
"year": 2025
},
"textStatus": "held",
"title": "An act relating to agriculture; modifying financial reporting requirements for grain buyers; amending Minnesota Statutes 2024, section 223.17, subdivision 6.",
"billNumber": "S.F.No. 1552",
"approvedDate": "2025-03-17",
"effectiveFirst": "2025-09-01",
"effectiveLast": "2025-09-01",
"enactmentOutcome": "signed",
"sourceUrl": "https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/",
"href": "/api/v1/us/session-laws/SSL_MN_2025R_G_Y2025_C1",
"candidates": [
{
"sessionLawId": "SSL_MN_2025R_G_Y2025_C1",
"citation": "CHAPTER 1--S.F.No. 1552",
"jurisdiction": "mn",
"session": {
"code": "2025R",
"label": "2025 Regular Session",
"type": "regular",
"year": 2025
},
"textStatus": "held",
"title": "An act relating to agriculture; modifying financial reporting requirements for grain buyers; amending Minnesota Statutes 2024, section 223.17, subdivision 6.",
"billNumber": "S.F.No. 1552",
"approvedDate": "2025-03-17",
"effectiveFirst": "2025-09-01",
"effectiveLast": "2025-09-01",
"enactmentOutcome": "signed",
"sourceUrl": "https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/",
"href": "/api/v1/us/session-laws/SSL_MN_2025R_G_Y2025_C1"
}
]
},
"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
},
"pinpoint": {
"requested": "(c)(1)",
"path": [
"c",
"1"
],
"label": "(1)",
"level": "paragraph",
"inferred": true,
"matched": true,
"matchLevel": "exact",
"leadIn": [
{
"path": [
"c"
],
"label": "(c)",
"text": "Unless a different limit is established under this Chapter, the limit is:"
}
],
"children": [
{
"path": [
"c",
"1"
],
"label": "(1)",
"level": "paragraph",
"inferred": true
}
],
"siblings": {
"previous": "b",
"next": "d"
},
"charStart": 1204,
"charEnd": 1873,
"kind": "range",
"reason": "no_such_subsection",
"structure": {
"source": "artifact",
"quality": "verified",
"builder": "ilga_html",
"textSha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
}
},
"missReason": "ambiguous_jurisdiction",
"candidates": [
{
"state": "co",
"actId": "REG_CO_T8_S1206-2",
"citation": "8 CCR 1206-2"
}
]
}
],
"resolvedCount": 2,
"failedCount": 1,
"count": 3,
"processingTimeMs": 610.2,
"creditsConsumed": 6
}Changes
- warning
added the new
miss_reason_unavailableenum value to the///response property for the response status - warning
added the new
response_size_capenum value to the/////response property for the response status - info
added the non-success response with the status
- info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status - info
the response property
////became required for the status
- warning