Skip to main content
POST
Search US statutes, constitutions, court rules, and executive actions

Authorizations

Authorization
string
header
required

API key issued from the Vaquill developer dashboard. Pass as Authorization: Bearer vq_key_...

Body

application/json
query
string
required

Search query in natural language.

Required string length: 2 - 500
Example:

"insider trading penalties"

corpusType

Restrict to one corpus, or to several by passing a list ("corpusType": ["USC", "CFR"]). One of: USC (United States Code), CFR (Code of Federal Regulations), STATE (state statutory codes; call /statutes/coverage for the list of ingested jurisdictions), CONSTITUTION (U.S. Constitution), FEDERAL_RULES (FRCP / FRCrP / FRE / FRAP / FRBP), STATE_CONSTITUTION (state constitutions; call /statutes/coverage for the current jurisdiction list), STATE_RULES (state court rules; see /statutes/coverage), EXECUTIVE_ACTION (Federal Register Presidential Documents), REGULATION (state administrative regulations; pair with state), FEDERAL_REGISTER (Federal Register agency rules, final and proposed), AGENCY_GUIDANCE (agency guidance: SSA rulings, IRS notices, revenue rulings and procedures). Omit to search across all corpora.

Available options:
USC,
CFR,
STATE,
CONSTITUTION,
FEDERAL_RULES,
STATE_CONSTITUTION,
STATE_RULES,
EXECUTIVE_ACTION,
REGULATION,
FEDERAL_REGISTER,
AGENCY_GUIDANCE,
SENTENCING_GUIDELINES,
US_TAX_TREATY,
STATE_AGENCY_GUIDANCE
Example:

"CFR"

state
enum<string>

Jurisdiction filter. A 2-letter code for one of the 52 supported US jurisdictions (50 states + DC + PR), or federal to scope to USC / CFR / Constitution / federal rules. Pass a LIST to search several at once ("state": ["ca", "ny", "tx"]), which is one call instead of one per jurisdiction. Case-insensitive: ca and CA both work. An unrecognized value is rejected with 422 rather than silently matching nothing. Omit to search every jurisdiction.

Available options:
federal,
al,
ak,
az,
ar,
ca,
co,
ct,
de,
dc,
fl,
ga,
hi,
id,
il,
in,
ia,
ks,
ky,
la,
me,
md,
ma,
mi,
mn,
ms,
mo,
mt,
ne,
nv,
nh,
nj,
nm,
ny,
nc,
nd,
oh,
ok,
or,
pa,
pr,
ri,
sc,
sd,
tn,
tx,
ut,
vt,
va,
wa,
wv,
wi,
wy
Example:

"ca"

code

Restrict to specific state statutory codes, e.g. tx_pe for the Texas Penal Code. Values are the actIds returned by GET /statutes/divisions?corpusType=STATE&state=XX, so the browse output can be fed straight back in. Pass a list to search several codes, across states if you like (["tx_pe", "ca_pen"]). This is the only way to scope below a whole jurisdiction: state=tx alone searches all ~15 Texas codes at once.

Example:

"tx_pe"

yearFrom
integer | null

Only return sections whose version year is >= this. Combine with yearTo for a window. Sections with no year are excluded once either bound is set.

Required range: 1700 <= x <= 2100
Example:

2020

yearTo
integer | null

Only return sections whose version year is <= this.

Required range: 1700 <= x <= 2100
Example:

2026

titleNumber
integer | null

Filter by USC/CFR title number (e.g., 17 for SEC, 42 for civil rights). Only meaningful for USC/CFR; ignored for state corpora whose titles are alphabetic (e.g. Texas pe = Penal Code).

Example:

17

chapter

Scope a search to one or more chapters within a title or code, e.g. 21 for USC Title 42 Chapter 21. This is the search-side of the parent object on each result: pass a hit's parent.chapter straight back to search that hit's neighbors. Chapter numbers repeat across titles, so pair it with titleNumber (USC) or code (state); an unpaired chapter is rejected. String or list.

Example:

"21"

part

Scope a search to one or more parts within a title, e.g. 240 for 17 C.F.R. Part 240. The CFR counterpart to chapter: pass a hit's parent.part straight back to search within that part. Pair it with titleNumber; an unpaired part is rejected. String or list.

Example:

"240"

source

Scope to one or more of the following. The named source within corpusType, for corpora that fold several independently filterable bodies of law into one token.

FEDERAL_RULES sources: frcp (Federal Rules of Civil Procedure), frcrp (Federal Rules of Criminal Procedure), fre (Federal Rules of Evidence), frap (Federal Rules of Appellate Procedure), frbp (Federal Rules of Bankruptcy Procedure), sct (Rules of the Supreme Court of the United States).

CFR sources: far (Federal Acquisition Regulation (48 C.F.R. ch. 1)), dfars (Defense Federal Acquisition Regulation Supplement (48 C.F.R. ch. 2)) (both are already part of CFR; this only splits the existing Title 48 data by chapter, it does not add new sections).

AGENCY_GUIDANCE sources: agency_guidance (General agency guidance), administrative_guidance (Synthesized administrative guidance (e.g. SALT cap, CTC, 401(k) limits)), ssa_ruling (Social Security Administration Rulings), irs_rev_proc (IRS Revenue Procedures), irs_notice (IRS Notices), irs_rev_rul (IRS Revenue Rulings), irs_announcement (IRS Announcements), merger_guidelines (DOJ & FTC Merger Guidelines (2023)), doj_leniency (DOJ Antitrust Division Leniency Policy), copyright_circular (US Copyright Office Circulars), doj_justice_manual (DOJ Justice Manual), uscis_policy_manual (USCIS Policy Manual), mpep (USPTO Manual of Patent Examining Procedure (MPEP)), tmep (USPTO Trademark Manual of Examining Procedure (TMEP)), cftc_staff_letter (CFTC Staff Letters (no-action, exemptive, interpretative; 2008-present)), fincen_ruling (FinCEN Administrative Rulings), fincen_guidance (FinCEN Guidance (alerts, advisories, notices, bulletins, fact sheets)), frb_sr_letter (Federal Reserve Supervision and Regulation (SR) / Consumer Affairs (CA) Letters), occ_bulletin (OCC Bulletins), occ_interpretive_letter (OCC Interpretive Letters), fdic_fil (FDIC Financial Institution Letters (FILs)), dfars_pgi (DFARS PGI (Procedures, Guidance, and Information)), nlrb_gc_memo (NLRB General Counsel Memoranda), nlrb_advice_memo (NLRB Division of Advice Memoranda (rolling 10-year window, not the full archive)), cpsc_advisory_opinion (CPSC Office of General Counsel Advisory Opinions (historical, 1970s-2012)), cpsc_secg (CPSC Small Entity Compliance Guides), bis_advisory_opinion (BIS (Bureau of Industry and Security) Advisory Opinions), ddtc_commodity_jurisdiction (DDTC (Directorate of Defense Trade Controls) Commodity Jurisdiction Determinations), ddtc_guidance (DDTC (Directorate of Defense Trade Controls) Policy Guidance Documents), hhs_ocr_hipaa_faq (HHS Office for Civil Rights HIPAA FAQs), hhs_ocr_hipaa_guidance (HHS Office for Civil Rights HIPAA Guidance Materials), hhs_ocr_resolution_agreement (HHS Office for Civil Rights HIPAA Resolution Agreements and Civil Money Penalties), fcc_declaratory_ruling (FCC (Federal Communications Commission) Declaratory Rulings), ferc_policy_statement (FERC (Federal Energy Regulatory Commission) Policy Statements), doe_appliance_guidance (DOE Appliance Standards Guidance and FAQs). Every result carries its own source, so you can pass a hit's value straight back. An unrecognized value is rejected with 422.

Example:

"sct"

fields

Return only these result fields, e.g. ["title", "excerpt"]. A result carries 40+ fields and most are null on any given row, so a full page of 50 ships a lot of nulls. actId and citation are always included, because a row without them cannot be used or attributed. Unknown names are rejected with 422 so a typo does not silently drop a field you needed. Omit for the full object.

Example:
limit
integer
default:10

Number of results to return per page.

Required range: 1 <= x <= 50
offset
integer
default:0

How many results to skip, for paging. Every page of a given query is cut from one ranking, so results never repeat or go missing between pages, and a later page costs no more than the first. The deepest reachable result is offset + limit; check hasMore to know when there is nothing further.

Required range: 0 <= x <= 70
excerptChars
integer
default:500

Characters of matching text to include in each result's excerpt. The excerpt is a ranking preview; use /statutes/section/{actId}/body for the full text. Default 500.

Required range: 100 <= x <= 4000
matchType
enum<string>
default:any

Controls exact vs. semantic matching, so there is no need for a separate keyword-only search mode. any (default) is hybrid semantic + keyword ranking and suits natural-language questions. Use all for strict keyword matching (every query term must appear in the text) or phrase for an exact-phrase match, e.g. a defined term or a statutory phrase, when you want lexical precision. To pull up one specific section, pass its citation as the query (e.g. 42 U.S.C. § 1983, Cal. Civ. Code § 1950.5) and it resolves to that section at rank 1.

Available options:
any,
all,
phrase

Response

Ranked sections for the query.

results
StatuteResult · object[]

Matching sections, most relevant first. Ordering is by relevance, not statutory order; use /statutes/section/{actId}/related for what sits either side of a section in its code.

count
integer
default:0

How many results came back in THIS response, i.e. the length of results. It is not a total match count: the API ranks a bounded set of candidates rather than scoring the whole corpus, so no such total exists. Use hasMore to decide whether to ask for another page.

total
integer
default:0
deprecated

DEPRECATED alias for count, kept for backward compatibility. The name reads as a corpus-wide match total, which it never was. Use count instead.

offset
integer
default:0

The offset applied to this page.

hasMore
boolean
default:false

Whether more results exist beyond this page.

query
string
default:""

The search query used.

processingTimeMs
number
default:0

Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.

Example:

240.5

creditsConsumed
number
default:0

Credits actually charged for this call. Read it rather than assuming the list price: failed and refunded work bills 0, and batch endpoints charge per item returned, so a partial result costs less than a full one.

Example:

4