Skip to main content
Vaquill organizes US primary law into 51 jurisdictions: 49 of the 50 states, plus the District of Columbia and Puerto Rico. Only Indiana statutes are not yet ingested (Indiana is queued). Federal law lives under its own federal jurisdiction, separate from the states.

How jurisdictions are keyed

  • State codes are 2-letter lowercase strings: ca, tx, ny, fl, and so on. You pass one as the state filter on POST /statutes/search to scope a state corpus.
  • federal is the jurisdiction for all federal corpora (USC, CFR, CONSTITUTION, FEDERAL_RULES, EXECUTIVE_ACTION, FEDERAL_REGISTER, AGENCY_GUIDANCE). Federal searches need only a corpusType, no state.
  • Each jurisdiction row carries a kind field: federal, state, or territory. DC and Puerto Rico are territory.
Not every corpus type exists for every jurisdiction. A state may have its statutory code (STATE) and constitution (STATE_CONSTITUTION) but no administrative regulations (REGULATION) or court rules (STATE_RULES) yet. Check coverage before you scope a search. Do not assume.

Discovering coverage

Three authenticated discovery endpoints tell you exactly what is available.

GET /statutes/coverage

The self-describing matrix. Every jurisdiction with its per-corpusType corpora counts, plus a corpusTypes legend. Start here.

GET /statutes/states

Headline counts per jurisdiction (sectionCount, hasData, corpora).

GET /statutes/codes?state=xx

The statutory codes (Penal, Civil, and so on) ingested for one state.

Live, not hardcoded

Coverage expands weekly. Read it at request time rather than baking counts into your app.

Reading a jurisdiction’s corpora

GET /statutes/coverage returns a wrapped { "data": ..., "meta": ... } response. Each jurisdiction in data.jurisdictions has a corpora object whose keys are the corpusType tokens that actually have data. Read those keys to know which searches you can scope.

Listing a state’s codes

Once you know a state has STATE data, GET /statutes/codes?state=xx breaks it into its named codes so you can see how that state is structured.
The discovery pattern is: GET /statutes/coverage to see which corpora a jurisdiction has, then GET /statutes/codes to see a state’s structure, then POST /statutes/search with the corpusType and state you confirmed.

Corpus Types

The 11 corpusType tokens and how to pair them with a state.

API Coverage

The full jurisdiction matrix with current section counts.