Vaquill AI's state regulations corpus holds about 1.5 million administrative code sections across 56 jurisdictions (the 50 states, DC, Puerto Rico, Guam, the Northern Mariana Islands, the US Virgin Islands and American Samoa), reachable with corpusType=REGULATION on a single search endpoint. It matters because the rule that actually binds your customer is usually not in the statute. It is in the agency regulation written under it.
Reviewed and corrected on 12 October 2026. This is general information, not legal advice.
This post is about how to query that corpus without building the two integration bugs almost everyone builds first.
TL;DR
- State regulations are where daily compliance lives. The statute grants authority. The administrative code sets the retention period, the license condition, the reporting deadline, and the form number.
- 56 jurisdictions, 56 publishers, no shared format. Each ships its own portal, its own numbering, and its own name for the same thing.
corpusType=REGULATIONnames a body of law, so pair it withstate. Leave the state off and you get one ranking across about 1.5 million sections from 56 different codes.- A section number is not a citation.
sectionNumberis170.8. The citation isN.Y. Comp. Codes R. & Regs. tit. 19, § 170.8. Keying on the first one collides across titles and silently merges unrelated rules. currencyNotecarries the publisher's own words, per section, where the publisher gave one. Some say the database is current through a register issue. Connecticut says outright that its online database isn't the official legal edition. New York has no single answer, which is why the field is per section rather than per state.- State regulation boards are registered on a monthly cadence, and you can audit any single state for free with
GET /boards, which reportscadenceandlastRetrievedAtper board (54 state regulation boards on 12 October 2026, not all 56 jurisdictions).
A state statute says licensees must keep records "for the period the agency requires by rule". Your client asks whether reading the statute is enough to know how long to keep them. What do you tell them?
This post is part of our US primary law corpus series, which walks the corpus one source at a time.
The neighboring state corpora get the same treatment in the state court rules API guide and the state constitutions API guide. For the regulated-industry view of all four layers at once, read Insurance Compliance Across 50 States: Where the Rules Actually Live.
Why the state administrative code is the hardest corpus to normalize
Ask a compliance engineer where their obligations come from and you get statutes. Ask them to point at the sentence that says "retain for three years," and it is almost always a regulation.
On the federal side there is one publisher for the regulations, which is why federal regulations can be served as a single daily-refreshed corpus. Everyone who wants federal regulations gets the same text.
The state side has no such single source. Each jurisdiction publishes its own administrative code, and they agree on almost nothing.
| What differs | What it looks like in practice |
|---|---|
| The name | California has CCR. Texas has TAC. New York has NYCRR. Florida has FAC. Maryland has COMAR. Connecticut has RCSA. Hawaii has HAR. Montana has ARM. New Mexico has NMAC. South Dakota has ARSD. |
| The numbering | New Mexico folds title, chapter, part, and section into one dotted string (15.4.1.12 NMAC). Louisiana uses a title plus a roman-numeral part (LAC 42:V.2025). Washington uses hyphenated numbers (WAC 16-306-060). |
| The delivery | Some publish bulk files, some a portal built for a human with a mouse, some PDFs. |
| The currency statement | Some print a register issue and date. Some print an edition year. Some print nothing. |
| The permission | Publishers set their own terms for automated access, and some opt crawlers out in robots.txt. |
There is no bulk standard to build against, so the work is one integration per jurisdiction, each kept alive separately.
A short history: a model act, not a uniform one
Why do the publishers do it so many ways? Partly because the people who tried to line them up chose not to force it.
The Uniform Law Commission first published a Model State Administrative Procedure Act in 1946, around the time Congress was writing the federal one. The prefatory note to the 2010 revision says there was substantial communication between the drafters of the two acts. The word to notice is "model". The Commission separates a model act, which offers principles for a state to adapt, from a uniform act, which asks every state to pass the same text. The drafters of the 1961 version put the reason plainly: "details must vary from state to state."
States took the advice, and then took it their own way. By about 1960, twelve states had adopted the 1946 act. The 1961 revision did better: over half the states adopted it or large parts of it. A third version came in 1981, described as entirely new and running to ninety-four sections. A fourth, the Revised Model State Administrative Procedure Act, carries a 2010 date. Its prefatory note says one reason for the rewrite was the Internet, which "did not exist at the time of the last revision" in 1981.
That 2010 text is worth reading if you build on state codes, because it says what a state should publish. It tells the state's publisher to "create and maintain an Internet website" that makes the administrative bulletin, the administrative code and filed guidance documents available, and to publish the bulletin at least once [each month] (the brackets mark options the act leaves to each state). Its legislative note adds that "All states have such an official, but their titles vary." Which is the whole story of this corpus in one line: every state has a publisher, and no two of them look alike. Everything in this section comes from the 2010 Revised Model State Administrative Procedure Act and its prefatory note.
What is in the corpus
REGULATION is one of the corpus tokens on the same search surface. The wider corpus holds more than 5.3 million sections of US primary law, federal and state. A section is one citable item with a stable actId.
| Corpus | Token | Jurisdictions | Approximate sections |
|---|---|---|---|
| State administrative regulations | REGULATION | 56 | ~1.5M |
| State statutory codes | STATE | 56 | ~2M |
| State court rules | STATE_RULES | 56 | ~72K |
| State constitutions | STATE_CONSTITUTION | 53 | ~13K |
| State agency guidance (insurance bulletins) | STATE_AGENCY_GUIDANCE | 49 | 13,360 |
The biggest jurisdictions, counting every corpus we hold for that jurisdiction (from the coverage endpoint on 12 October 2026), are California 248,459 sections, Texas 173,553, Pennsylvania 166,487, Puerto Rico 141,558, Indiana 131,787, Illinois 130,201, New York 119,448, Washington 115,477, Oregon 114,832, and New Jersey 112,184.
The token needs a state
corpusType=REGULATION names a body of law. It doesn't name a jurisdiction. Send it alone and you get one relevance ranking computed across about 1.5 million sections from 56 codes that don't share vocabulary. Every corpus token is listed in the corpusType reference.
Here is a cross-state query and what came back, unfiltered:
curl -X POST https://api.vaquill.ai/api/v1/us/statutes/search \
-H "Authorization: Bearer vq_key_..." \
-H "Content-Type: application/json" \
-d '{
"query": "licensee shall retain records for three years",
"corpusType": "REGULATION",
"limit": 20
}'
On 12 October 2026 the top twenty spanned New Jersey, New York, New Mexico, Illinois, Louisiana, Massachusetts, California, Ohio, Washington, Hawaii, Oklahoma, Wyoming and Oregon. Every hit was on point for the phrase. None of them was chosen with a specific licensee in a specific state in mind.
Add state and the same query becomes answerable:
{
"query": "licensee shall retain records for three years",
"corpusType": "REGULATION",
"state": "ca",
"limit": 10
}
To narrow below a whole jurisdiction, add code, taking the value from GET /us/statutes/divisions (corpusType=REGULATION&state=ca lists California's codes, such as ca_22 for 22 CCR). titleNumber is for the US Code and the CFR only: sent with a state corpus it is rejected with a 422.
state accepts a single code or a list, so ["ca","ny","tx"] is a legitimate multi-state sweep when that is genuinely what you want. What is never right is leaving the field off and hoping ranking sorts out jurisdiction for you.
Two behaviors are worth knowing. Unknown or misplaced filter values are rejected with a 422 rather than silently matching nothing, so a typo fails loudly instead of returning a confident empty list. And failed calls are not charged, so a rejected request costs nothing. A search costs 4 credits; GET /boards and GET /us/statutes/coverage are free.
The citation-shape trap
This is the bug. A state regulation's section number and its full citation are different fields, and teams keep building lookup keys out of the wrong one.
Take one California result from 12 October 2026, searching 22 CCR with code set to ca_22:
{
"actId": "STATE_CA_CCR_T22_D6_C7_S2_S86270",
"citation": "Cal. Code Regs. tit. 22, § 86270",
"citationShort": "22 CCR § 86270",
"sectionNumber": "86270",
"titleNumber": "22",
"sectionTitle": "Participant Records.",
"currencyNote": "This database is current through 8/14/26 Register 2026, No. 33."
}
Four different strings identify the same rule. Now look at how little those strings agree from state to state, all from results of the cross-state query above:
| State | citation | citationShort | actId |
|---|---|---|---|
| New York | N.Y. Comp. Codes R. & Regs. tit. 19, § 170.8 | 19 CRR-NY 170.8 | STATE_NY_NYCRR_T19_CV_SC_P170_S170_8 |
| New Mexico | 15.4.1.12 NMAC | 15.4.1.12 NMAC | SREGS_NM_T15_C4_P1_S12 |
| Louisiana | La. Admin. Code tit. 42, pt. V, § 2025 | LAC 42:V.2025 | STATE_LA_LAC_T42_PV_S2025 |
| Washington | WAC 16-306-060 | WAC 16-306-060 | STATE_WA_ADC_16_306_060 |
| Hawaii | Haw. Code R. § 11-45-78 | HAR §11-45-78 | STATE_HI_HAR_T11_C45_S78 |
| Ohio | Ohio Admin. Code 3701:1-48-23 | Ohio Admin. Code 3701:1-48-23 | STATE_OH_ADC_3701_1_48_23 |
| Wyoming | Uranium Recovery Rules, Ch. 1, § 12 | 020.0013.1.12 | STATE_WY_WYAR_A020_P0013_C1_S12 |
Read the New York row again. 170.8 isn't a citation. It is a fragment. The same query returned 19 CRR-NY 170.8, 19 CRR-NY 185.3 and 12 CRR-NY 38.34, three sections from two different titles. A key built from the bare number will happily merge rules from different titles that have nothing to do with each other. Louisiana has the same shape: the citation carries a title and a roman-numeral part, and 2025 on its own tells you neither.
Then look at Wyoming, where the human-readable citation is a rule-set name rather than a number, and New Mexico, where the section number is the whole citation because NMAC folds title, chapter, part, and section into one dotted string. No single parsing rule survives all three.
The practical rule for an integration: never reconstruct an identifier, always echo one. Store actId in your database, keep citation alongside it for display, and treat sectionNumber as a component for breadcrumbs and sorting rather than as an identity. The citation formats reference lists the accepted forms.
currencyNote, and being honest about it
Where a publisher states its own currency, the statement rides on the result as currencyNote, per section. We don't normalize these into a date, because normalizing would hide what the publisher actually said. The status and currency reference defines that field alongside goodLawStatus. A section whose publisher gave no statement we captured comes back with currencyNote: null, so read the field per result and treat null as "no statement", not as "current".
Per section is the grain that matters. Here is what those statements looked like in results on 12 October 2026:
| Jurisdiction | currencyNote |
|---|---|
| California | This database is current through 8/14/26 Register 2026, No. 33. |
| New York | Current through November 30, 2022 (on 19 CRR-NY 170.8 and 185.3; other New York sections carry other dates) |
| Connecticut | At this time, the Regulations of Connecticut State Agencies database is not an official legal edition of the RCSA. The official version is the hard copy RCSA (in blue loose-leaf binders) published and printed by the Commission on Official Legal Publications, as amended by subsequent final approved regulations published and printed in the weekly Connecticut Law Journal (CLJ). |
| Hawaii | Unofficial department-posted copy. Hawaii has no consolidated official HAR; the official filed copy is on paper with the Office of the Lieutenant Governor. |
Two things fall out of that table.
The dates differ by publisher and by section. California's note names a register issue from August 2026. The two New York sections above say November 2022, and New York's own sections disagree with each other, so a per-state currency column of your own is the row that will break first for New York.
Some publishers say the online copy is not the official edition. Connecticut and Hawaii both say so in their own words, and some publishers print no statement at all.
In their words: who gets to call a text official
The Connecticut note matters more than it looks, because "official" is a legal status. The Supreme Court spent a whole case on a version of the question. In Georgia v. Public.Resource.Org (decided April 27, 2020), the Court held that the annotations in Georgia's official code could not be copyrighted. Chief Justice Roberts wrote that "[t]he animating principle behind this rule is that no one can own the law." The case concerned a state's annotated statutes, so don't stretch it into a rule about every administrative code. The opinion is on supremecourt.gov.
When the Georgia fight was news in 2017, a Hacker News commenter explained what the official label actually does: "The difference between unofficial and official versions of the text largely relies on which version will control the interpretation if there is a copying error" (jcranmer, Hacker News, March 2017). That is the reason to care. A typo in an unofficial copy is the copy's problem. A typo in the official edition is the law's problem.
Monthly cadence, and how to audit one state for free
State regulation boards are registered on a monthly cadence. That is the intended schedule, not a promise about the last run, so the API also exposes when the last retrieval landed.
GET /boards is free and returns every watchable source. This is the Alabama regulations board on 12 October 2026:
{
"corpusType": "state_regulation",
"state": "al",
"label": "State regs AL",
"cadence": "monthly",
"scopable": true,
"scopeBrowseCorpus": "REGULATION",
"lastRetrievedAt": "2026-09-10T05:00:00.421282+00:00"
}
Read two fields together:
cadenceis the schedule the board is registered on. For state regulations it is monthly.lastRetrievedAtis when a retrieval actually landed. It records when we last checked, not when the law last changed, and it is absent when none has landed.
Registration isn't cadence, and the point of publishing the timestamp is that you can measure the age yourself rather than assume it. If you are building a compliance product on this corpus, poll GET /boards on your own schedule, alert when lastRetrievedAt for a state you depend on falls behind its cadence, and gate your UI on the age you measure rather than the age you assume.
One more note on the year filter. yearFrom and yearTo filter on the last amendment year the publisher credits, so they track the law rather than our rebuild date. About a fifth of sections carry no amendment credit at all, because some publishers print none, and those sections drop out of results as soon as either bound is set. That is a defensible default and a surprising one, so set the bounds deliberately.
Who this corpus is wrong for
It is wrong for anyone who needs verified, publisher-printed text of a rule as it stood on a past date, because asOf on this corpus is a reconstruction from observed changes. It is wrong for anyone who wants NAIC model law text, which is out of scope. And it is wrong for a team that wants a single normalized citation grammar across every jurisdiction, because that grammar doesn't exist in the source material and inventing one would misquote some jurisdictions to tidy up the rest.
It fits a team building compliance monitoring, licensing workflows, agent tooling that has to cite a rule it can link back to, or an internal research surface where a lawyer needs the state rule under a federal obligation. The collection layer is published at github.com/Vaquill-AI/open-us-law.
FAQ
What is a state regulations API?
It is an interface that returns state administrative code sections, the rules agencies write under statutory authority, as structured data rather than web pages. Vaquill AI exposes them through POST /us/statutes/search with corpusType=REGULATION and a state filter, plus direct retrieval by actId. Each result carries the citation, the code path, and the publisher's currency statement where one was captured.
How many state regulations are in the corpus?
About 1.5 million sections across 56 jurisdictions: the 50 states, the District of Columbia, Puerto Rico, Guam, the Northern Mariana Islands, the US Virgin Islands and American Samoa. That sits inside a wider corpus of more than 5.3 million sections of US primary law. Exact per-jurisdiction counts come from the free GET /us/statutes/coverage endpoint with a measuredAt timestamp.
Why do I have to send a state filter with corpusType=REGULATION?
Because REGULATION names a body of law and not a place. Without state, one relevance ranking is computed across 56 different administrative codes, and a query about record retention returns correct-looking hits from a dozen states at once. The token says what kind of law you are searching; state says whose law it is.
What is the difference between sectionNumber and citation?
sectionNumber is the section component only, such as 170.8. citation is the full official form, such as N.Y. Comp. Codes R. & Regs. tit. 19, § 170.8, and citationShort is the compact form, 19 CRR-NY 170.8. Section numbers repeat across titles, so a lookup key built from sectionNumber merges unrelated rules. Use actId as the key.
Is actId predictable enough to construct by hand?
No. Take it from a search or citation-resolve response and store it. The API's own guidance is that hand-built identifiers usually return 404, and the prefix isn't even uniform inside one corpus.
How current are state regulations in the API?
It varies by publisher, and the API says so per section on currencyNote where the publisher gave a statement. The value is the publisher's own words rather than a normalized date, so you can tell a note that names a register issue from one that says the online copy is unofficial. Read it per result rather than per state. A null means no statement was captured, not that the text is current.
How often do state regulations refresh?
State regulation boards are registered on a monthly cadence. Because a registered cadence isn't proof a run happened, GET /boards also reports lastRetrievedAt for each state regulation board (54 on 12 October 2026). That endpoint is free, so you can audit any single jurisdiction without spending a credit.
Can I query what a state regulation said on a past date?
Yes, as a reconstruction. asOf=YYYY-MM-DD on the section body call rebuilds the earlier text from the first change observed after your date, and isBounded marks answers that rest on when change capture began rather than on the law. Stored published editions back asOf only for a few sources (the CFR annual editions and some US Code editions, among others), so a state rule gets the reconstruction. A section we know changed but cannot rebuild comes back unavailable.
Where does the text come from?
From each jurisdiction's official publisher, or the publisher's own posted copy. Where a result has a sourceUrl, it points at that publisher's file, and the currencyNote says in the publisher's words how current or how official that copy is.
New legal AI guides, weekly.
Further Reading
State Insurance Bulletins API: 49 Insurance Departments in One Query
Read postExecutive Orders API: Presidential Documents, Refreshed Daily
Read postFederal Register API: Querying Over 196,000 Final and Proposed Rules
Read postInsurance Compliance Across 50 States: Where the Rules Actually Live
Read postState Constitutions API: 53 Jurisdictions With Article and Section Structure
Read postState Court Rules API: 56 Jurisdictions and How to Query Them
Read post
Co-Founder & CTO
Priyansh leads engineering and AI at Vaquill AI: the pipelines that pull statutes, regulations and court rules from every US jurisdiction's official publisher, and the REST API, MCP server and open dataset that serve them.