Skip to main content
What this gets you: turn a plain-English obligation into every governing statute, regulation, and agency rule that actually applies to it, across federal and state law, each one sourced and citable - the core building block of a compliance or RegTech product. Start from a plain-language obligation like “breach notification timelines” and end with the governing sections: federal regulations, agency guidance, and the relevant state rules, each with its citation and a link to the official source. This is the backbone of a RegTech or compliance-mapping feature. Endpoints used: POST /us/statutes/search (4 credits per call), GET /us/statutes/section/{actId}/body (6 credits), GET /us/statutes/coverage (free, to discover which corpora a jurisdiction has).
Vaquill AI returns the authoritative regulatory text and links back to the official government source. It supports building a compliance map, it does not render a compliance determination. Pair it with review by qualified counsel.

The flow

1

Pick the corpora that govern the obligation

A regulatory obligation usually lives across several corpora: CFR (federal regulations), FEDERAL_REGISTER (agency rules), AGENCY_GUIDANCE (rulings and notices), and REGULATION (state administrative rules, paired with a state).
2

Search each corpus for the obligation

Run POST /us/statutes/search once per corpus, using the same plain-language query, and filter each corpus with what that corpus actually carries: agency / documentType / publishedFrom / publishedTo on FEDERAL_REGISTER, source on AGENCY_GUIDANCE. Add "excludeRepealed": true so a rule the publisher has already killed cannot enter the map as an obligation.
3

Pull the text and group the results

Fetch each section’s full text with GET /us/statutes/section/{actId}/body, then group by corpusType and jurisdiction so the map reads by source of authority.
4

Present with citations and official links

Show each section with its citation and the official government URL so a reviewer can open the primary source.

Step 1: search across the regulatory corpora

Not sure which corpora a state has? Call GET /us/statutes/coverage and read the jurisdiction’s corpora keys, then pass one as corpusType. State regulations (REGULATION) are ingested for a subset of states, so check before you scope to one.

Narrowing the Federal Register sweep

FEDERAL_REGISTER is the noisiest corpus on this list, because it holds every rule and every proposal every agency has published. An unfiltered sweep ranks your obligation against all of it. Four filters cut it down, and a compliance map usually wants all four.
For a compliance map, documentType: "final" is usually the right default. A proposed rule is not yet an obligation, and folding the two into one map is how a draft requirement ends up presented as law. Run a second proposed pass when you want the pipeline of what is coming, and label it as such.
Agency slugs come back on the results themselves. Ask for agencySlugs in fields, or read it off a broad sweep, and use what you find to scope the follow-up query. publishedFrom is the PUBLICATION date, which is not the same as yearFrom: that one filters the version year of a section.
agency, documentType, publishedFrom and publishedTo apply to FEDERAL_REGISTER (agency also applies to EXECUTIVE_ACTION). Other corpora carry no agency or publication date, so combining these with them returns nothing.

Narrowing to one named source

AGENCY_GUIDANCE is not one body of guidance, it is a registry: SSA rulings, IRS notices/procedures/rulings, DOJ & FTC Merger Guidelines, the DOJ Antitrust Leniency Policy, Copyright Office Circulars, the DOJ Justice Manual, the USCIS Policy Manual, USPTO MPEP/TMEP, CFTC Staff Letters, FinCEN rulings and guidance, Federal Reserve/OCC/FDIC banking guidance, DFARS PGI, and NLRB memoranda all live under the same corpusType. FEDERAL_RULES and CFR similarly fold in several sets (the Federal Rules of Procedure plus Supreme Court Rules; FAR and DFARS within CFR Title 48). If you already know an obligation is, say, a CFTC swaps-clearing question or a BSA/AML question, skip the broader sweep and add source to go straight to that one registry entry instead of ranking it against everything else in the corpus:
Every result already carries its own source, so a hit from a broad sweep tells you which registry entry to scope a follow-up query to. See Filtering to one named source for the full list of source values and which corpus each belongs to; an unrecognized value is rejected with 422 rather than silently matching nothing.

Step 2 and 3: collect, fetch text, and group

Python
A grouped result reads by source of authority:

Notes for a production compliance map

Once you have the grouped, cited text, you can pass it to an LLM in your stack to produce a plain-language summary of each obligation, one that cites each section and links its official source. Use the strict grounding pattern in Ground an LLM answer in statutes so the summary quotes only the retrieved regulatory text.
REGULATION is state-scoped: always pair it with a two-letter state code. Coverage spans a subset of states and expands weekly, so drive the state list from GET /us/statutes/coverage rather than assuming every state is present.

Ground an LLM answer (RAG)

Summarize the mapped obligations with strict, cited grounding.

Resolve a citation

Verify a specific regulation citation and pull its text.

Grounding LLMs

The principles behind grounding legal AI on primary sources.

API Coverage

Which corpora and jurisdictions are ingested, with live counts.
Last modified on September 6, 2026