openapi: 3.2.0
info:
title: Vaquill Ai US Statutes API
version: 1.0.0
contact:
name: Vaquill API Support
url: https://www.vaquill.ai
email: support@vaquill.ai
license:
name: Proprietary
url: https://www.vaquill.ai/terms
termsOfService: https://www.vaquill.ai/terms
description: 'Operations tagged US Statutes across 2 of this provider''s published API definitions: vaquill-ai-openapi.json, vaquill-ai-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.vaquill.ai
description: Production
security:
- ApiKeyAuth: []
- ApiKeyHeader: []
- ApiKeyQuery: []
tags:
- name: US Statutes
description: Search and retrieve US primary law.
paths:
/api/v1/us/statutes/search:
post:
tags:
- US Statutes
summary: Search US statutes, constitutions, court rules, and executive actions
description: 'Search across federal and state law and get back the most relevant sections
with citations and links to official source documents.'
operationId: search_statutes_api_v1_us_statutes_search_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSearchRequest'
required: true
responses:
'200':
description: Ranked sections for the query.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSearchResponse'
example:
results:
- actId: CFR_T17_P240_S240_10b5_1
citation: 17 C.F.R. § 240.10b5-1 (2026)
citationShort: 17 C.F.R. § 240.10b5-1
title: Trading on the basis of material nonpublic information in insider trading cases
corpusType: CFR
state: federal
year: 2026
relevanceScore: 0.91
excerpt: The manipulative and deceptive devices prohibited by section 10(b)...
titleNumber: 17
sectionNumber: 240.10b5-1
displayPath: Title 17 CFR > Chapter II > Part 240 > Section 240.10b5-1
htmlUrl: https://statutes-us.vaquill.ai/ecfr/...
externalUrl: https://www.ecfr.gov/...
sourceUrl: https://www.ecfr.gov/...
total: 1
query: insider trading material nonpublic information
processingTimeMs: 412.3
creditsConsumed: 4
'402':
description: Insufficient API credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
example:
detail: Insufficient credits
'422':
description: Invalid request body (e.g. query too short, limit over 50, bad corpusType).
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
example:
detail: Invalid request parameters
errors:
- loc:
- body
- limit
msg: Input should be less than or equal to 50
type: less_than_equal
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/section/{act_id}:
get:
tags:
- US Statutes
summary: Get statute section metadata
description: 'Get detailed metadata for a specific statute section by its ID.
**Cost**: 2 credits. Not-found (404) and failed lookups are not charged.
The `actId` comes from `/us/statutes/search` results or Ask API sources
(e.g., `USC_T42_C21_S1983`). It is structured but not meant to be hand-built;
always take it from a prior response.
Returns citation, title hierarchy, breadcrumb, and links to every available
format (HTML, PDF, XML, plain text, DOCX) where the source provides them. Use
`/us/statutes/section/{actId}/body` for the full text.'
operationId: get_section_api_v1_us_statutes_section__act_id__get
parameters:
- name: act_id
in: path
required: true
schema:
type: string
minLength: 3
maxLength: 200
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
examples:
- USC_T42_C21_S1983
title: Act Id
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionResponse'
example:
section:
actId: USC_T42_C21_S1983
citation: 42 U.S.C. § 1983 (2026)
citationShort: 42 U.S.C. § 1983
title: Civil action for deprivation of rights
corpusType: USC
state: federal
year: 2026
relevanceScore: 0.0
excerpt: 'officer''s judicial capacity, injunctive relief shall not be granted unless a declaratory decree was violated or declaratory relief was unavailable".
1979—Pub. L. 96–170 inserted "or the District of Columbia" after "Territory", and provisions relating to Acts of Congress applicable solely to the District of Columbia.
Statutory Notes and Related Subsidiaries
Effective Date of 1979 Amendment
Amendment by Pub. L. 96–170 applicable with respect to any deprivation of rights, privileges, or...'
titleNumber: '42'
titleName: THE PUBLIC HEALTH AND WELFARE
chapter: '21'
chapterName: CIVIL RIGHTS
sectionNumber: '1983'
sectionTitle: Civil action for deprivation of rights
displayPath: 'Title 42: THE PUBLIC HEALTH AND WELFARE / Chapter 21: CIVIL RIGHTS / Subchapter I: GENERALLY / Section 1983: Civil action for deprivation of rights'
breadcrumb:
- type: title
num: '42'
label: Title 42
name: THE PUBLIC HEALTH AND WELFARE
- type: chapter
num: '21'
label: Chapter 21
name: CIVIL RIGHTS
- type: subchapter
num: I
label: Subchapter I
name: GENERALLY
- type: section
num: '1983'
label: Section 1983
name: Civil action for deprivation of rights
parent:
corpusType: USC
titleNumber: 42
chapter: '21'
subchapter: I
subchapterName: GENERALLY
popularName: Public Health and Welfare
actStatus: in_force
goodLawStatus: good_law
renumberedTo: ''
transferredTo: ''
sourceCredit: R.S. §1979; Pub. L. 96–170, §1, Dec. 29, 1979, 93 Stat. 1284; Pub. L. 104–317, title III, §309(c), Oct. 19, 1996, 110 Stat. 3853.
amendmentYears:
- 1996
- 1979
lastAmendedYear: 1996
amendmentsCount: 2
currentThrough: '2026-09-02'
publicLaws:
- Pub. L. 104-317
- Pub. L. 96-170
textUrl: https://statutes-us.vaquill.ai/usc/olrc/119-103/sections/USC_T42_C21_S1983.txt
externalUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1983&num=0&edition=prelim
sourceUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1983&num=0&edition=prelim
processingTimeMs: 8.2
creditsConsumed: 6
'404':
description: Section not found. `reason` says why and `didYouMean` what to send.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionNotFoundError'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/resolve:
get:
tags:
- US Statutes
summary: Resolve a citation to its section
description: 'Resolve a Bluebook citation string to the exact section it names, confirmed
against the corpus, with an official source link.
**Cost**: 2 credits. Charged whether or not the citation resolves,
because a confident "this citation does not resolve" is the answer you want when
verifying a citation an LLM produced. Only server errors are refunded.
Pass a Bluebook citation as `cite`:
- Federal statute: `42 U.S.C. 1983`
- Federal regulation: `16 C.F.R. 444.1`
- State statute: `Del. Code Ann. tit. 13, 1301`
A pinpoint subsection (`42 U.S.C. 1983(b)(2)`) resolves to the parent section and
is echoed back in `subsection`. When the citation resolves, `section` carries the
full metadata (the same shape as `/us/statutes/section/{actId}`) and `resolved` is
`true`. When it does not, `resolved` is `false` and `section` is `null`: treat
that as "unverified", not "current".
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 6 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.'
operationId: resolve_statute_citation
parameters:
- name: cite
in: query
required: true
schema:
type: string
minLength: 2
maxLength: 200
description: A Bluebook citation string, e.g. '42 U.S.C. 1983' or '16 C.F.R. 444.1'.
examples:
- 42 U.S.C. 1983
title: Cite
description: A Bluebook citation string, e.g. '42 U.S.C. 1983' or '16 C.F.R. 444.1'.
- name: state
in: query
required: false
schema:
anyOf:
- type: string
minLength: 2
maxLength: 7
enum:
- federal
- al
- ak
- az
- ar
- ca
- co
- ct
- de
- dc
- fl
- ga
- gu
- hi
- id
- il
- in
- ia
- ks
- ky
- la
- me
- md
- ma
- mi
- mn
- ms
- mo
- mt
- ne
- nv
- nh
- nj
- nm
- ny
- nc
- nd
- mp
- oh
- ok
- or
- pa
- pr
- ri
- sc
- sd
- tn
- tx
- ut
- vt
- va
- wa
- wv
- wi
- wy
- type: 'null'
description: 'Optional jurisdiction to resolve WITHIN: a two-letter state code, e.g. `tx`, or `federal` for the U.S. Code, the C.F.R., federal rules and the U.S. Constitution. Some citation forms are shared: `8 CCR 1206-2` is Colorado and `22 CCR 76227` is California, and the acronym alone cannot say which. This is a constraint, not a hint -- a citation that names a different jurisdiction returns `resolved: false` rather than being forced into this one, and `citationOutsideFilters` says which section it names.'
examples:
- tx
title: State
description: 'Optional jurisdiction to resolve WITHIN: a two-letter state code, e.g. `tx`, or `federal` for the U.S. Code, the C.F.R., federal rules and the U.S. Constitution. Some citation forms are shared: `8 CCR 1206-2` is Colorado and `22 CCR 76227` is California, and the acronym alone cannot say which. This is a constraint, not a hint -- a citation that names a different jurisdiction returns `resolved: false` rather than being forced into this one, and `citationOutsideFilters` says which section it names.'
- name: corpusType
in: query
required: false
schema:
anyOf:
- type: string
enum:
- CONSTITUTION
- REGULATION
- STATE
- STATE_CONSTITUTION
- STATE_RULES
- type: 'null'
description: 'Optional corpus to resolve WITHIN: `STATE` (statutory text, federal or state), `REGULATION` (administrative codes), `STATE_RULES` (court rules), `CONSTITUTION` (constitutional text), `STATE_CONSTITUTION` (constitutional text; a synonym of `CONSTITUTION` here, since `state` is what separates the two). Narrows a citation whose form several corpora share; like `state`, a citation belonging to another corpus resolves to nothing instead.'
examples:
- REGULATION
title: Corpustype
description: 'Optional corpus to resolve WITHIN: `STATE` (statutory text, federal or state), `REGULATION` (administrative codes), `STATE_RULES` (court rules), `CONSTITUTION` (constitutional text), `STATE_CONSTITUTION` (constitutional text; a synonym of `CONSTITUTION` here, since `state` is what separates the two). Narrows a citation whose form several corpora share; like `state`, a citation belonging to another corpus resolves to nothing instead.'
responses:
'200':
description: The resolution verdict, with the section when resolved.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteResolveResponse'
example:
resolved: true
inputCitation: 42 U.S.C. 1983
section:
actId: USC_T42_C21_S1983
citation: 42 U.S.C. § 1983 (2026)
citationShort: 42 U.S.C. § 1983
title: Civil action for deprivation of rights
corpusType: USC
state: federal
year: 2026
relevanceScore: 0.0
excerpt: 'officer''s judicial capacity, injunctive relief shall not be granted unless a declaratory decree was violated or declaratory relief was unavailable".
1979—Pub. L. 96–170 inserted "or the District of Columbia" after "Territory", and provisions relating to Acts of Congress applicable solely to the District of Columbia.
Statutory Notes and Related Subsidiaries
Effective Date of 1979 Amendment
Amendment by Pub. L. 96–170 applicable with respect to any deprivation of rights, privileges, or...'
titleNumber: '42'
titleName: THE PUBLIC HEALTH AND WELFARE
chapter: '21'
chapterName: CIVIL RIGHTS
sectionNumber: '1983'
sectionTitle: Civil action for deprivation of rights
displayPath: 'Title 42: THE PUBLIC HEALTH AND WELFARE / Chapter 21: CIVIL RIGHTS / Subchapter I: GENERALLY / Section 1983: Civil action for deprivation of rights'
breadcrumb:
- type: title
num: '42'
label: Title 42
name: THE PUBLIC HEALTH AND WELFARE
- type: chapter
num: '21'
label: Chapter 21
name: CIVIL RIGHTS
- type: subchapter
num: I
label: Subchapter I
name: GENERALLY
- type: section
num: '1983'
label: Section 1983
name: Civil action for deprivation of rights
parent:
corpusType: USC
titleNumber: 42
chapter: '21'
subchapter: I
subchapterName: GENERALLY
popularName: Public Health and Welfare
actStatus: in_force
goodLawStatus: good_law
renumberedTo: ''
transferredTo: ''
sourceCredit: R.S. §1979; Pub. L. 96–170, §1, Dec. 29, 1979, 93 Stat. 1284; Pub. L. 104–317, title III, §309(c), Oct. 19, 1996, 110 Stat. 3853.
amendmentYears:
- 1996
- 1979
lastAmendedYear: 1996
amendmentsCount: 2
currentThrough: '2026-09-02'
publicLaws:
- Pub. L. 104-317
- Pub. L. 96-170
textUrl: https://statutes-us.vaquill.ai/usc/olrc/119-103/sections/USC_T42_C21_S1983.txt
externalUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1983&num=0&edition=prelim
sourceUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1983&num=0&edition=prelim
processingTimeMs: 7.0
creditsConsumed: 2.0
'400':
description: '`state` or `corpusType` is outside the accepted set. The credits for the call are refunded.'
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- US Statutes
summary: Resolve many citations at once
description: 'Resolve up to 50 Bluebook citations to their exact sections in one call.
The batch form of `GET /us/statutes/resolve`, and the same verdict per
citation. Use it when you are checking the citations in a document rather than
looking one up: a brief, a memo, or a model''s output typically carries dozens,
and the single-citation route makes that dozens of round trips.
**Cost**: 2 credits per citation, the same as resolving them one at a time.
Batching buys a round trip and latency, not a discount. Unresolved citations
are charged (a confident "this does not resolve" is the answer you are paying
for when verifying a model''s output); only citations we failed to process
because of a backend error are refunded, and `creditsConsumed` reports what was
actually billed.
**Duplicates are collapsed** before pricing and before the response is built,
so sending the same citation twice costs once and returns one entry.
**Every input gets an entry.** An unresolved citation appears with
`resolved: false`, never as an omission: a caller checking thirty citations
needs to know WHICH failed, and a shorter array cannot say that.
## Example
```python
requests.post(url, headers=h, json={
"citations": [
"42 U.S.C. 1983",
"16 C.F.R. 444.1",
"Cal. Civ. Code 1950.5",
],
})
```
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 and let each citation name its own.
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 6 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.'
operationId: resolve_statute_citations_batch
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteResolveBatchRequest'
responses:
'200':
description: One verdict per submitted citation, in order.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteResolveBatchResponse'
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Empty `citations`, more than 50, or a bad `state`/`corpusType`.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/section/{act_id}/related:
get:
tags:
- US Statutes
summary: Get the sections around this one
description: 'The sections immediately before and after a given section, in statutory order.
**Cost**: 2 credits. Not-found and failed lookups are not charged.
Search cannot answer "what comes next", because relevance ranking is not
statutory order: the definitions a section relies on usually sit a few sections
back and its exceptions a few forward.
Neighbours never cross the containing chapter (or, where a section has no
chapter, the containing title or state code), so you get the sections a reader
would actually turn to, not the numerically adjacent row from an unrelated part
of the corpus.
Ordering is natural, not lexicographic: `9` before `10`, `240.9` before
`240.10`, `1983` before `1983a`.'
operationId: get_section_neighbors_api_v1_us_statutes_section__act_id__related_get
parameters:
- name: act_id
in: path
required: true
schema:
type: string
minLength: 3
maxLength: 200
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
examples:
- USC_T42_C21_S1983
title: Act Id
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
- name: limit
in: query
required: false
schema:
type: integer
maximum: 10
minimum: 1
description: How many sections to return on EACH side.
examples:
- 3
default: 3
title: Limit
description: How many sections to return on EACH side.
responses:
'200':
description: The section plus its neighbours.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteNeighborsResponse'
example:
section:
actId: USC_T42_C21_S1983
citation: 42 U.S.C. § 1983 (2026)
citationShort: 42 U.S.C. § 1983
title: Civil action for deprivation of rights
corpusType: USC
state: federal
year: 2026
relevanceScore: 0.0
excerpt: 'officer''s judicial capacity, injunctive relief shall not be granted unless a declaratory decree was violated or declaratory relief was unavailable".
1979—Pub. L. 96–170 inserted "or the District of Columbia" after "Territory", and provisions relating to Acts of Congress applicable solely to the District of Columbia.
Statutory Notes and Related Subsidiaries
Effective Date of 1979 Amendment
Amendment by Pub. L. 96–170 applicable with respect to any deprivation of rights, privileges, or...'
titleNumber: '42'
titleName: THE PUBLIC HEALTH AND WELFARE
chapter: '21'
chapterName: CIVIL RIGHTS
sectionNumber: '1983'
sectionTitle: Civil action for deprivation of rights
displayPath: 'Title 42: THE PUBLIC HEALTH AND WELFARE / Chapter 21: CIVIL RIGHTS / Subchapter I: GENERALLY / Section 1983: Civil action for deprivation of rights'
breadcrumb:
- type: title
num: '42'
label: Title 42
name: THE PUBLIC HEALTH AND WELFARE
- type: chapter
num: '21'
label: Chapter 21
name: CIVIL RIGHTS
- type: subchapter
num: I
label: Subchapter I
name: GENERALLY
- type: section
num: '1983'
label: Section 1983
name: Civil action for deprivation of rights
parent:
corpusType: USC
titleNumber: 42
chapter: '21'
subchapter: I
subchapterName: GENERALLY
popularName: Public Health and Welfare
actStatus: in_force
goodLawStatus: good_law
renumberedTo: ''
transferredTo: ''
sourceCredit: R.S. §1979; Pub. L. 96–170, §1, Dec. 29, 1979, 93 Stat. 1284; Pub. L. 104–317, title III, §309(c), Oct. 19, 1996, 110 Stat. 3853.
amendmentYears:
- 1996
- 1979
lastAmendedYear: 1996
amendmentsCount: 2
currentThrough: '2026-09-02'
publicLaws:
- Pub. L. 104-317
- Pub. L. 96-170
textUrl: https://statutes-us.vaquill.ai/usc/olrc/119-103/sections/USC_T42_C21_S1983.txt
externalUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1983&num=0&edition=prelim
sourceUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1983&num=0&edition=prelim
previous:
- actId: USC_T42_C21_S1981
citation: 42 U.S.C. § 1981 (2026)
citationShort: 42 U.S.C. § 1981
title: Equal rights under the law
corpusType: USC
state: federal
year: 2026
relevanceScore: 0.0
excerpt: 'Statement of equal rights
All persons within the jurisdiction of the United States shall have the same right in every State and Territory to make and enforce contracts, to sue, be parties, give evidence, and to the full and equal benefit of all laws and proceedings for the security of persons and property as is enjoyed by white citizens, and shall be subject to like punishment, pains, penalties, taxes, licenses, and exactions of every kind, and to no other.
(b) "Make and enforce contracts"...'
titleNumber: '42'
titleName: THE PUBLIC HEALTH AND WELFARE
chapter: '21'
chapterName: CIVIL RIGHTS
sectionNumber: '1981'
sectionTitle: Equal rights under the law
displayPath: 'Title 42: THE PUBLIC HEALTH AND WELFARE / Chapter 21: CIVIL RIGHTS / Subchapter I: GENERALLY / Section 1981: Equal rights under the law'
breadcrumb:
- type: title
num: '42'
label: Title 42
name: THE PUBLIC HEALTH AND WELFARE
- type: chapter
num: '21'
label: Chapter 21
name: CIVIL RIGHTS
- type: subchapter
num: I
label: Subchapter I
name: GENERALLY
- type: section
num: '1981'
label: Section 1981
name: Equal rights under the law
parent:
corpusType: USC
titleNumber: 42
chapter: '21'
subchapter: I
subchapterName: GENERALLY
popularName: Public Health and Welfare
actStatus: in_force
goodLawStatus: good_law
renumberedTo: ''
transferredTo: ''
sourceCredit: R.S. §1977; Pub. L. 102–166, title I, §101, Nov. 21, 1991, 105 Stat. 1071.
amendmentYears:
- 1991
lastAmendedYear: 1991
amendmentsCount: 1
publicLaws:
- Pub. L. 102-166
- Pub. L. 94-559
textUrl: https://statutes-us.vaquill.ai/usc/olrc/119-103/sections/USC_T42_C21_S1983.txt
externalUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1981&num=0&edition=prelim
sourceUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1981&num=0&edition=prelim
next:
- actId: USC_T42_C21_S1984
citation: 42 U.S.C. § 1984 (2026)
citationShort: 42 U.S.C. § 1984
title: Omitted
corpusType: USC
state: federal
year: 2026
relevanceScore: 0.0
excerpt: 'Editorial Notes
Codification
Section, act Mar. 1, 1875, ch. 114, §5, 18 Stat. 337, which was formerly classified to section 46 of Title 8, Aliens and Nationality, related to Supreme Court review of cases arising under act Mar. 1, 1875. Sections 1 and 2 of act Mar. 1, 1875 were declared unconstitutional in U.S. v. Singleton, 109 U.S. 3, and sections 3 and 4 of such act were repealed by act June 25, 1948, ch. 645, §21, 62 Stat. 862.'
titleNumber: '42'
titleName: THE PUBLIC HEALTH AND WELFARE
chapter: '21'
chapterName: CIVIL RIGHTS
sectionNumber: '1984'
sectionTitle: Omitted
displayPath: 'Title 42: THE PUBLIC HEALTH AND WELFARE / Chapter 21: CIVIL RIGHTS / Subchapter I: GENERALLY / Section 1984: Omitted'
breadcrumb:
- type: title
num: '42'
label: Title 42
name: THE PUBLIC HEALTH AND WELFARE
- type: chapter
num: '21'
label: Chapter 21
name: CIVIL RIGHTS
- type: subchapter
num: I
label: Subchapter I
name: GENERALLY
- type: section
num: '1984'
label: Section 1984
name: Omitted
parent:
corpusType: USC
titleNumber: 42
chapter: '21'
subchapter: I
subchapterName: GENERALLY
popularName: Public Health and Welfare
actStatus: omitted
goodLawStatus: not_good_law
renumberedTo: ''
transferredTo: ''
sourceCredit: ''
amendmentsCount: 0
textUrl: https://statutes-us.vaquill.ai/usc/olrc/119-103/sections/USC_T42_C21_S1983.txt
externalUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1984&num=0&edition=prelim
sourceUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1984&num=0&edition=prelim
container: CIVIL RIGHTS
processingTimeMs: 9.5
creditsConsumed: 6
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'404':
description: Section not found. `reason` says why.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionNotFoundError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/sections:
post:
tags:
- US Statutes
summary: Get metadata for many statute sections
description: 'Metadata for up to 50 sections in one call.
**Cost**: 2 credits **per section returned**. Identifiers with no match
are refunded, so a batch of 50 ids that resolves 47 costs 94 credits, not 100.
Batching is a round-trip and latency win, not a discount.
The response preserves the order of `actIds` and reports misses separately in
`notFound`, so results can be zipped back onto the ids that produced them.
**Take ids from a `/us/statutes/search` response, do not build them from a
citation.** An act_id looks derivable and is not: `Tex. Property Code § 93.005`
is `STATE_TX_Cpr_C93_S93.005`, and the `Cpr` code segment exists only in the
data. Assembling ids works for a few jurisdictions whose hierarchy happens to
sit in the citation, which makes the failures look like missing coverage rather
than like wrong ids.
So every miss also comes back in `notFoundDetail` saying which it was:
`assembled_id` with the real ids in `didYouMean`, or `not_in_corpus` when
nothing matching exists (check `/us/statutes/coverage` for the jurisdiction
before concluding a section is absent). The diagnosis is free and never
charged. To go from a citation rather than a guess, use
`/us/statutes/resolve`.
Use `/us/statutes/section/{actId}/body` for full text; this endpoint returns
metadata and source links only.'
operationId: get_sections_batch_api_v1_us_statutes_sections_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionsRequest'
required: true
responses:
'200':
description: Sections found, plus any ids that did not resolve.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionsResponse'
example:
sections:
- actId: USC_T42_C21_S1983
citation: 42 U.S.C. § 1983 (2026)
citationShort: 42 U.S.C. § 1983
title: Civil action for deprivation of rights
corpusType: USC
state: federal
year: 2026
relevanceScore: 0.0
excerpt: 'officer''s judicial capacity, injunctive relief shall not be granted unless a declaratory decree was violated or declaratory relief was unavailable".
1979—Pub. L. 96–170 inserted "or the District of Columbia" after "Territory", and provisions relating to Acts of Congress applicable solely to the District of Columbia.
Statutory Notes and Related Subsidiaries
Effective Date of 1979 Amendment
Amendment by Pub. L. 96–170 applicable with respect to any deprivation of rights, privileges, or...'
titleNumber: '42'
titleName: THE PUBLIC HEALTH AND WELFARE
chapter: '21'
chapterName: CIVIL RIGHTS
sectionNumber: '1983'
sectionTitle: Civil action for deprivation of rights
displayPath: 'Title 42: THE PUBLIC HEALTH AND WELFARE / Chapter 21: CIVIL RIGHTS / Subchapter I: GENERALLY / Section 1983: Civil action for deprivation of rights'
breadcrumb:
- type: title
num: '42'
label: Title 42
name: THE PUBLIC HEALTH AND WELFARE
- type: chapter
num: '21'
label: Chapter 21
name: CIVIL RIGHTS
- type: subchapter
num: I
label: Subchapter I
name: GENERALLY
- type: section
num: '1983'
label: Section 1983
name: Civil action for deprivation of rights
parent:
corpusType: USC
titleNumber: 42
chapter: '21'
subchapter: I
subchapterName: GENERALLY
popularName: Public Health and Welfare
actStatus: in_force
goodLawStatus: good_law
renumberedTo: ''
transferredTo: ''
sourceCredit: R.S. §1979; Pub. L. 96–170, §1, Dec. 29, 1979, 93 Stat. 1284; Pub. L. 104–317, title III, §309(c), Oct. 19, 1996, 110 Stat. 3853.
amendmentYears:
- 1996
- 1979
lastAmendedYear: 1996
amendmentsCount: 2
publicLaws:
- Pub. L. 104-317
- Pub. L. 96-170
textUrl: https://statutes-us.vaquill.ai/usc/olrc/119-103/sections/USC_T42_C21_S1983.txt
externalUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1983&num=0&edition=prelim
sourceUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1983&num=0&edition=prelim
- actId: USC_T42_C21_S1981a
citation: 42 U.S.C. § 1981a (2026)
citationShort: 42 U.S.C. § 1981a
title: Damages in cases of intentional discrimination in employment
corpusType: USC
state: federal
year: 2026
relevanceScore: 0.0
excerpt: 'practice or discriminatory practices with malice or with reckless indifference to the federally protected rights of an aggrieved individual.
(2) Exclusions from compensatory damages
Compensatory damages awarded under this section shall not include backpay, interest on backpay, or any other type of relief authorized under section 706(g) of the Civil Rights Act of 1964 [42 U.S.C. 2000e–5(g)].
(3) Limitations
The sum of the amount of compensatory damages awarded under this section for future...'
titleNumber: '42'
titleName: THE PUBLIC HEALTH AND WELFARE
chapter: '21'
chapterName: CIVIL RIGHTS
sectionNumber: 1981a
sectionTitle: Damages in cases of intentional discrimination in employment
displayPath: 'Title 42: THE PUBLIC HEALTH AND WELFARE / Chapter 21: CIVIL RIGHTS / Subchapter I: GENERALLY / Section 1981a: Damages in cases of intentional discrimination in employment'
breadcrumb:
- type: title
num: '42'
label: Title 42
name: THE PUBLIC HEALTH AND WELFARE
- type: chapter
num: '21'
label: Chapter 21
name: CIVIL RIGHTS
- type: subchapter
num: I
label: Subchapter I
name: GENERALLY
- type: section
num: 1981a
label: Section 1981a
name: Damages in cases of intentional discrimination in employment
parent:
corpusType: USC
titleNumber: 42
chapter: '21'
subchapter: I
subchapterName: GENERALLY
popularName: Public Health and Welfare
actStatus: in_force
goodLawStatus: good_law
renumberedTo: ''
transferredTo: ''
sourceCredit: R.S. §1977A, as added Pub. L. 102–166, title I, §102, Nov. 21, 1991, 105 Stat. 1072.
amendmentsCount: 0
publicLaws:
- Pub. L. 101-336
- Pub. L. 102-166
- Pub. L. 88-352
textUrl: https://statutes-us.vaquill.ai/usc/olrc/119-103/sections/USC_T42_C21_S1983.txt
externalUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1981a&num=0&edition=prelim
sourceUrl: https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title42-section1981a&num=0&edition=prelim
notFound:
- STATE_CO_S38-12-103
notFoundDetail:
- actId: STATE_CO_S38-12-103
reason: assembled_id
didYouMean:
- STATE_CO_T38_A12_P1_S38-12-103
count: 2
processingTimeMs: 11.0
creditsConsumed: 12
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Empty or oversized `actIds`.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/section/{act_id}/body:
get:
tags:
- US Statutes
summary: Get statute full text
description: Get the full text of a statute section in HTML and plain text.
operationId: get_section_body_api_v1_us_statutes_section__act_id__body_get
parameters:
- name: act_id
in: path
required: true
schema:
type: string
minLength: 3
maxLength: 200
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
examples:
- CFR_T17_P240_S240_10b5_1
title: Act Id
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
- name: format
in: query
required: false
schema:
enum:
- all
- both
- html
- markdown
- plain
- content
- operative
type: string
description: 'Which representations to return. `both` (the default) returns `html` and `plain`. A long section carries the same text twice that way, so `plain` or `html` alone roughly halves the payload. Cost is unchanged: the fetch is the same either way.
`all` adds `markdown` where the section has a structured rendering. It is opt-in because it is a third full copy of the text (about 600,000 extra characters on `49 CFR 172.101`), which a model-facing client would pay for in tokens without asking.
`markdown` returns only `markdown`. On a section with no structured rendering it falls back to `plain` with a `note` saying so, never to an empty body. `tables` and `figures` are returned on every format, because they are small and describe the text you received.
`content` omits `html` and `plain` and returns the split fields (`content`, `sourceCredit`, `notes`).
`operative` omits `notes` as well, leaving `content` + `sourceCredit`: the law and what enacted it, and nothing else. This is the smallest representation of a section, and on a note-heavy section it is the difference between a payload that fits in a prompt and one that does not. Measured on `17 U.S.C. § 107`: 95,217 bytes at `both`, 30,545 at `content`, 1,564 at `operative`, all for the same 6 credits.
Only United States Code sections can be split, so on any other corpus both values fall back to returning `plain` with a `note` saying why -- `content` will be null there, so read `note` rather than assuming the section was empty.'
examples:
- operative
default: both
title: Format
description: 'Which representations to return. `both` (the default) returns `html` and `plain`. A long section carries the same text twice that way, so `plain` or `html` alone roughly halves the payload. Cost is unchanged: the fetch is the same either way.
`all` adds `markdown` where the section has a structured rendering. It is opt-in because it is a third full copy of the text (about 600,000 extra characters on `49 CFR 172.101`), which a model-facing client would pay for in tokens without asking.
`markdown` returns only `markdown`. On a section with no structured rendering it falls back to `plain` with a `note` saying so, never to an empty body. `tables` and `figures` are returned on every format, because they are small and describe the text you received.
`content` omits `html` and `plain` and returns the split fields (`content`, `sourceCredit`, `notes`).
`operative` omits `notes` as well, leaving `content` + `sourceCredit`: the law and what enacted it, and nothing else. This is the smallest representation of a section, and on a note-heavy section it is the difference between a payload that fits in a prompt and one that does not. Measured on `17 U.S.C. § 107`: 95,217 bytes at `both`, 30,545 at `content`, 1,564 at `operative`, all for the same 6 credits.
Only United States Code sections can be split, so on any other corpus both values fall back to returning `plain` with a `note` saying why -- `content` will be null there, so read `note` rather than assuming the section was empty.'
- name: structured
in: query
required: false
schema:
type: boolean
description: 'When true, also return a `subsections` tree parsed from the text for pincite addressing, and `markdown` as that tree rendered as nested Markdown lists. Same cost.
`structured=true` OWNS `markdown`: on every `format`, and on every `source`, `markdown` is the nested-list rendering, never the table-preserving rendering a `r2_render` section otherwise returns for `format=all`/`markdown` (a `note` says so when that happens). Ask without `structured` for the tables. With `format=markdown` the nested lists are returned alone, without `html` or `plain`.'
examples:
- true
default: false
title: Structured
description: 'When true, also return a `subsections` tree parsed from the text for pincite addressing, and `markdown` as that tree rendered as nested Markdown lists. Same cost.
`structured=true` OWNS `markdown`: on every `format`, and on every `source`, `markdown` is the nested-list rendering, never the table-preserving rendering a `r2_render` section otherwise returns for `format=all`/`markdown` (a `note` says so when that happens). Ask without `structured` for the tables. With `format=markdown` the nested lists are returned alone, without `html` or `plain`.'
- name: asOf
in: query
required: false
schema:
anyOf:
- type: string
pattern: ^\d{4}-\d{2}-\d{2}$
- type: 'null'
description: 'Return the section''s text as it stood on this date (`YYYY-MM-DD`) instead of today''s. Same cost.
**This is a reconstruction, not an archive.** The corpus holds one current text per citation; an earlier one is rebuilt from the before-side of the first change we OBSERVED after your date. The `asOf` block on the response says which version you got (`source`), what it rests on (`basisChangeId`), how far back the evidence reaches (`observedFrom`), and whether the answer is bounded by when capture began rather than by the law (`isBounded`). Read `isBounded` before citing the text.
A section that did not exist yet returns `available: false` with `asOf.existed: false`, which is a real answer and is charged. A section we know changed but cannot rebuild returns `source: "unavailable"` and IS refunded, because you asked for a historical text and did not get one.
A date that does not exist on a calendar (`2026-02-30`) is a 422 and is not charged.'
examples:
- '2026-01-15'
format: date
title: Asof
description: 'Return the section''s text as it stood on this date (`YYYY-MM-DD`) instead of today''s. Same cost.
**This is a reconstruction, not an archive.** The corpus holds one current text per citation; an earlier one is rebuilt from the before-side of the first change we OBSERVED after your date. The `asOf` block on the response says which version you got (`source`), what it rests on (`basisChangeId`), how far back the evidence reaches (`observedFrom`), and whether the answer is bounded by when capture began rather than by the law (`isBounded`). Read `isBounded` before citing the text.
A section that did not exist yet returns `available: false` with `asOf.existed: false`, which is a real answer and is charged. A section we know changed but cannot rebuild returns `source: "unavailable"` and IS refunded, because you asked for a historical text and did not get one.
A date that does not exist on a calendar (`2026-02-30`) is a 422 and is not charged.'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteBodyResponse'
example:
actId: USC_T42_C21_S1983
html: '
Every person who, under color of any statute, ordinance, regulation, custom, or usage, of any State or Territory or the District of Columbia, subjects, or causes to be subjected, any citizen of the United States ...
'
plain: Every person who, under color of any statute, ordinance, regulation, custom, or usage, of any State or Territory or the District of Columbia, subjects, or causes to be subjected, any citizen of the United States or other person within the jurisdiction thereof to the deprivation of any rights, privileges, or immunities secured by the Constitution and laws, shall be liable to the party injured ...
source: r2_s3
available: true
processingTimeMs: 8.4
creditsConsumed: 6.0
'404':
description: Section not found. `reason` says why and `didYouMean` what to send.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionNotFoundError'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/count:
post:
tags:
- US Statutes
summary: Count the sections in a scope
description: 'How many sections sit in a jurisdiction, corpus, code, title, chapter, part,
article or federal rule set. The scoping filters (`code`, `article`, `chapter`,
`part`) take the same values and pairing rules as on `/us/statutes/search`.
**Cost**: 1 credit. A scope that matches nothing is refunded, because an empty
answer here is usually a wrong filter rather than a finding.
Use it to size a job before you run it. Walking a container with
`/us/statutes/divisions` and hydrating what you find is cheap per call and adds
up across a whole corpus, so this is the call that tells you what you are about
to spend before you spend it.
**There is no `query` parameter, on purpose.** Search ranks over a bounded
window, so "how many sections match this query" has no answer beyond the size of
that window. This counts a SCOPE, which is exact. Pair the two: count the scope
here, enumerate it with `/us/statutes/divisions`, then rank within it using
`/us/statutes/search`.
The figure counts SECTIONS. Long sections are stored as several passages and are
counted once.'
operationId: count_statute_sections_api_v1_us_statutes_count_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteCountRequest'
required: true
responses:
'200':
description: The number of sections in scope, and the scope that produced it.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteCountResponse'
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Unknown filter value or unknown field.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/coverage:
get:
tags:
- US Statutes
summary: Coverage matrix by jurisdiction and corpusType
description: 'Self-describing coverage matrix. Returns a legend of every `corpusType` token (what it contains and whether it is federal or state-scoped) plus, for each jurisdiction, the per-corpusType ingested DOCUMENT counts in `corpora` (one per section or document, not per retrieval passage; `totalPassages` in the same response IS the passage count). Use it to learn exactly what is queryable where before calling /us/statutes/search: read a jurisdiction''s `corpora` keys, then pass one as `corpusType` (paired with `state` for state-scoped corpora). Each legend entry''s `browsable` says whether `GET /us/statutes/divisions` can also walk that corpus as a tree.
It reports what we hold, not how recently it was refreshed. For the age of any source, call `GET /boards`: it is free, needs no credits, and carries `lastRetrievedAt`, `cadence` and `retrievalStatus` (`current`, `stale`, `failing`, `unconfirmed`, `never_retrieved`) for every tracked source. Read it alongside the counts here so a section count carries an age. It records when we last CHECKED, not when the law last changed, and it is not a claim that the law is current as of that date. Where a publisher states its own currency, that rides on each section as `currentThrough`.
**Free.** Requires an API key and is rate-limited, but costs no credits.
State session laws (acts as enacted) are at /us/session-laws. Where we hold any for a jurisdiction, its `sessionLaws` block says which sessions are `complete` or `partial`, how many laws we serve, the expected total and open gaps, and the `series`, `instrumentTypes` and approval-date span that exist (the values `GET /us/session-laws/list` accepts). A jurisdiction we hold none for has no block, for example IN and TN at launch. This is the one place session-law coverage is served: check it before you list, then read the laws at `/us/session-laws`.'
operationId: list_statutes_coverage_api_v1_us_statutes_coverage_get
responses:
'200':
description: Coverage legend plus per-jurisdiction corpusType counts.
content:
application/json:
schema:
$ref: '#/components/schemas/UsStatutesCoverageEnvelope'
example:
data:
corpusTypes:
- token: USC
description: United States Code (federal statutes)
scope: federal
browsable: true
- token: REGULATION
description: State administrative regulations
scope: state
browsable: true
- token: AGENCY_GUIDANCE
description: Sub-regulatory agency guidance across named sources
scope: federal
browsable: false
sourceScopeNotes:
cms_iom: 'Held: the 204 chapter, appendix and exhibit documents CMS publishes across its Medicare Internet-Only Manuals ... Not held, and these are the publisher''s own gaps rather than ours: Pub. 100-12 (State Medicaid Manual), Pub. 100-13 (Medicaid CHIP) and Pub. 100-23 (Payment Error Rate Measurement) publish no chapters at all ...'
jurisdictions:
- code: federal
name: Federal (USC + CFR)
kind: federal
sectionCount: 812553
hasData: true
corpora:
CFR: 491612
USC: 212042
FEDERAL_REGISTER: 102861
EXECUTIVE_ACTION: 3599
AGENCY_GUIDANCE: 2510
FEDERAL_RULES: 526
CONSTITUTION: 74
- code: wa
name: Washington
kind: state
sectionCount: 140326
hasData: true
corpora:
STATE: 89005
REGULATION: 51142
STATE_CONSTITUTION: 179
totalSections: 2937552
stateCountWithData: 49
meta:
processingTimeMs: 5401.2
creditsConsumed: 0
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
example:
detail: Invalid or missing API key.
'403':
description: API key lacks `research:read` scope.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/divisions:
get:
tags:
- US Statutes
summary: Browse the statutory hierarchy
description: 'Walk the statutory tree one level at a time, in statutory order. Each call
returns the immediate children of wherever you are, so you can enumerate a code
top to bottom without searching.
**Cost**: 1 credit. A request whose filters do not fit the corpus is
rejected before anything is charged. A filter naming a container that does not
exist is refunded, and so is a browse that returns no rows, so exploring the
hierarchy never costs you anything for a level that turns out to be empty.
Pass the deepest level you already know; the response returns the level below it:
- `corpusType=USC` -> the titles
- `corpusType=USC&titleNumber=42` -> the chapters in Title 42
- `corpusType=USC&titleNumber=42&chapter=21` -> the sections in Chapter 21 (leaf)
- `corpusType=CFR&titleNumber=17&part=240` -> the sections in Part 240 (leaf)
- `corpusType=STATE&state=tx` -> the state''s codes
- `corpusType=STATE&state=tx&code=tx_pe` -> the chapters in the Texas Penal Code
- `corpusType=STATE&state=ny&code=ny_jud&article=2` -> the sections in a New York article (leaf)
- `corpusType=CONSTITUTION` -> the articles and amendments of the US Constitution
- `corpusType=CONSTITUTION&article=Article III` -> the sections of Article III (leaf)
- `corpusType=STATE_CONSTITUTION&state=nm` -> the articles of the New Mexico Constitution
- `corpusType=FEDERAL_RULES` -> the rule sets (FRCP, FRE, FRCrP, ...)
- `corpusType=FEDERAL_RULES&code=frcp` -> the Federal Rules of Civil Procedure (leaf)
Interior nodes carry a `sectionCount` and `isLeaf: false`; drill into one by
passing its `identifier` back as the filter its `kind` names (`title` ->
`titleNumber`, `chapter`, `part`, `code`, `article`). Leaf nodes are sections
and carry an `actId` for `/us/statutes/section/{actId}`. Browse supports `USC`,
`CFR`, `STATE`, `REGULATION`, `CONSTITUTION`, `STATE_CONSTITUTION` and
`FEDERAL_RULES`, which is also what `browsable` says on each
`GET /us/statutes/coverage` legend entry. The rest are dated series or share no
tree, so use `/us/statutes/search` for those.
Federal rules are published twice: by the Judicial Conference at uscourts.gov
(`frcp`, `fre`, ...) and as an appendix to the U.S. Code (`uscapp_t28a_fre`,
...). Each is its own rule set here, so neither is listed twice under one heading.'
operationId: list_statute_divisions_api_v1_us_statutes_divisions_get
parameters:
- name: corpusType
in: query
required: true
schema:
type: string
description: Corpus to browse. Case-insensitive. The browsable subset of the `corpusType` tokens on `/us/statutes/coverage`.
examples:
- USC
enum:
- USC
- CFR
- STATE
- REGULATION
- CONSTITUTION
- STATE_CONSTITUTION
- FEDERAL_RULES
title: Corpustype
description: Corpus to browse. Case-insensitive. The browsable subset of the `corpusType` tokens on `/us/statutes/coverage`.
- name: state
in: query
required: false
schema:
anyOf:
- type: string
enum:
- al
- ak
- az
- ar
- ca
- co
- ct
- de
- dc
- fl
- ga
- gu
- hi
- id
- il
- in
- ia
- ks
- ky
- la
- me
- md
- ma
- mi
- mn
- ms
- mo
- mt
- ne
- nv
- nh
- nj
- nm
- ny
- nc
- nd
- mp
- oh
- ok
- or
- pa
- pr
- ri
- sc
- sd
- tn
- tx
- ut
- vt
- va
- wa
- wv
- wi
- wy
- type: 'null'
description: 2-letter jurisdiction code, required for the state-scoped corpora (STATE, REGULATION, STATE_CONSTITUTION). Case-insensitive.
examples:
- tx
title: State
description: 2-letter jurisdiction code, required for the state-scoped corpora (STATE, REGULATION, STATE_CONSTITUTION). Case-insensitive.
- name: titleNumber
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
description: USC/CFR title number to drill into.
examples:
- 42
title: Titlenumber
description: USC/CFR title number to drill into.
- name: code
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Code to drill into: a state code such as `tx_pe` (list them with `corpusType=STATE&state=`), or a federal rule set such as `frcp` (list them with `corpusType=FEDERAL_RULES`).'
examples:
- tx_pe
title: Code
description: 'Code to drill into: a state code such as `tx_pe` (list them with `corpusType=STATE&state=`), or a federal rule set such as `frcp` (list them with `corpusType=FEDERAL_RULES`).'
- name: chapter
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Chapter identifier to drill into (USC and state codes). Accepted alongside `part` on CFR, where it is not needed: part numbers are unique within a title.'
examples:
- '21'
title: Chapter
description: 'Chapter identifier to drill into (USC and state codes). Accepted alongside `part` on CFR, where it is not needed: part numbers are unique within a title.'
- name: part
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Part identifier to drill into (CFR).
examples:
- '240'
title: Part
description: Part identifier to drill into (CFR).
- name: article
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Article to drill into: a constitution''s article or amendment (`Article III`, `Amendment XIV`), or the article of a state code that is divided by articles rather than chapters (New York, where the listing''s `kind` is `article`). Pass the `identifier` exactly as the listing returned it.'
examples:
- Article III
title: Article
description: 'Article to drill into: a constitution''s article or amendment (`Article III`, `Amendment XIV`), or the article of a state code that is divided by articles rather than chapters (New York, where the listing''s `kind` is `article`). Pass the `identifier` exactly as the listing returned it.'
- name: excludeRepealed
in: query
required: false
schema:
type: boolean
description: 'Leave out sections whose status is affirmatively dead (repealed, superseded, renumbered and similar). A section carrying no recorded status is KEPT: a missing status is not evidence of repeal. Same vocabulary as the filter of this name on `POST /us/statutes/search`.'
default: false
title: Excluderepealed
description: 'Leave out sections whose status is affirmatively dead (repealed, superseded, renumbered and similar). A section carrying no recorded status is KEPT: a missing status is not evidence of repeal. Same vocabulary as the filter of this name on `POST /us/statutes/search`.'
- name: actStatus
in: query
required: false
schema:
anyOf:
- type: string
enum:
- abolished
- deleted
- expired
- in_force
- inactive
- non_precedential
- not_funded
- not_yet_effective
- omitted
- proposed
- recodified
- recompiled
- rejected
- relocated
- removed
- renumbered
- repealed
- rescinded
- reserved
- revoked
- superseded
- terminated
- transferred
- unconstitutional
- vacant
- vacated
- vetoed
- withdrawn
- type: 'null'
description: List only sections carrying this status, e.g. `repealed`. The inverse of `excludeRepealed`, and useful for auditing what a container holds that is no longer operative.
title: Actstatus
description: List only sections carrying this status, e.g. `repealed`. The inverse of `excludeRepealed`, and useful for auditing what a container holds that is no longer operative.
- name: cursor
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Resume token from a previous response's `nextCursor`. Only meaningful at the level that lists sections. Omit it to start at the beginning of the container.
title: Cursor
description: Resume token from a previous response's `nextCursor`. Only meaningful at the level that lists sections. Omit it to start at the beginning of the container.
responses:
'200':
description: The child divisions at the requested level.
content:
application/json:
schema:
$ref: '#/components/schemas/UsStatutesDivisionsResponse'
example:
corpusType: USC
level: sections
parentLabel: Title 42, Chapter 21
divisions:
- identifier: '1981'
name: Equal rights under the law
kind: section
isLeaf: true
actId: USC_T42_C21_S1981
- identifier: 1981a
name: Damages in cases of intentional discrimination in employment
kind: section
isLeaf: true
actId: USC_T42_C21_S1981a
- identifier: '1982'
name: Property rights of citizens
kind: section
isLeaf: true
actId: USC_T42_C21_S1982
- identifier: '1983'
name: Civil action for deprivation of rights
kind: section
isLeaf: true
actId: USC_T42_C21_S1983
count: 38
processingTimeMs: 5.1
creditsConsumed: 1.0
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Filters do not fit the corpus shape.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/section/{act_id}/changes:
get:
tags:
- US Statutes
summary: Get this section's change history
description: 'Every change our refreshes have observed to one section: when it was added,
each time its text was replaced, and whether it has since been removed.
**Cost**: 1 credit. Not-found and failed lookups are not charged. An empty
history for a section that exists IS the answer and is charged.
A section lookup tells you what the law says today. This tells you whether that
is the same thing it said when you last reviewed it. Unlike a board watch, which
can only show changes that postdate the subscription, this reads the history
already captured.
**What this is, and is not.** These are OBSERVED changes: a refresh compared
the source against the copy we held and found it different. `detectedAt` is
when we saw it, an upper bound on when it took effect, never the effective date
itself. For the publisher''s own effective and amendment dates, read
`amendmentHistory` on `GET /us/statutes/section/{act_id}`. The two are
complements: the publisher tells you what it says changed, this tells you what
actually moved and when we could have told you.
**Coverage is bounded by capture, not by the age of the law.** Change capture
began long after the corpus itself did, it is per-source, and events are swept
at 5 years. An empty `changes` list therefore means *no captured change*, not
*never amended*. The `coverage` field on every response says so; surface it
rather than rendering an empty list as "unchanged".
**A removed section still answers.** When the newest change is a `removed`, the
section is gone from the corpus and `section` comes back null. That is a
successful, charged response, not a 404 -- learning that a provision was
repealed is the point.
**Paging.** `hasMore` is true when the page filled to `limit`. Walk backwards
through history with `beforeId` (the smallest `id` you hold) and forward into
new changes with `sinceId` (`cursor` from your last page).
**Alerting on future changes** is a different surface: subscribe to the
`corpusType` on this response via `POST /boards/watches`, optionally scoped to
this exact `actId`, and take before/after diff text from the watch''s own diff
endpoint.'
operationId: get_section_changes_api_v1_us_statutes_section__act_id__changes_get
parameters:
- name: act_id
in: path
required: true
schema:
type: string
minLength: 3
maxLength: 200
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
examples:
- CFR_T21_P314_S314_50
title: Act Id
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
- name: limit
in: query
required: false
schema:
type: integer
maximum: 200
minimum: 1
description: Max changes to return on this page.
examples:
- 50
default: 50
title: Limit
description: Max changes to return on this page.
- name: sinceId
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 0
- type: 'null'
description: 'Return only changes with an `id` greater than this: the cursor for polling forward into new changes. Ids are a monotonic sequence, so this is exact, immune to clock skew, and cannot drop two changes that share a timestamp. Carry `cursor` forward.'
title: Sinceid
description: 'Return only changes with an `id` greater than this: the cursor for polling forward into new changes. Ids are a monotonic sequence, so this is exact, immune to clock skew, and cannot drop two changes that share a timestamp. Carry `cursor` forward.'
- name: beforeId
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 0
- type: 'null'
description: 'Return only changes with an `id` less than this: the cursor for walking BACK through history, which is what a newest-first reader needs. Pass the smallest `id` on your last page.'
title: Beforeid
description: 'Return only changes with an `id` less than this: the cursor for walking BACK through history, which is what a newest-first reader needs. Pass the smallest `id` on your last page.'
- name: changeKind
in: query
required: false
schema:
anyOf:
- type: array
items:
enum:
- added
- amended
- removed
type: string
- type: 'null'
description: Filter to these kinds. Repeat the parameter to pass several (`?changeKind=amended&changeKind=removed`). Omit for all three.
title: Changekind
description: Filter to these kinds. Repeat the parameter to pass several (`?changeKind=amended&changeKind=removed`). Omit for all three.
- name: order
in: query
required: false
schema:
enum:
- asc
- desc
type: string
description: '`desc` (default) is newest first, the natural reading order for a history. Use `asc` to replay a section''s life forward, or when catching up from a cursor.'
default: desc
title: Order
description: '`desc` (default) is newest first, the natural reading order for a history. Use `asc` to replay a section''s life forward, or when catching up from a cursor.'
responses:
'200':
description: The section's captured change history, newest first.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteChangesResponse'
example:
actId: CFR_T21_P314_S314_50
section:
actId: CFR_T21_P314_S314_50
citation: 21 C.F.R. § 314.50
title: Content and format of an NDA
corpusType: CFR
state: federal
changes:
- id: 91
changeKind: amended
detectedAt: '2026-08-07T04:10:00Z'
citation: 21 CFR 314.50
displayCitation: 21 C.F.R. § 314.50
title: Content and format of an NDA
hasDiff: true
corpusType: cfr
total: 1
hasMore: false
cursor: 91
coverage: 'Observed changes only: what a refresh of this source detected, from when change capture began for it through today, retained 5 years. This is not the section''s legislative history, and an empty list means no captured change rather than never amended.'
processingTimeMs: 18.4
creditsConsumed: 1
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'404':
description: No such section, and no change ever captured for this act_id. `reason` says why.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionNotFoundError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/section/{act_id}/enactments:
get:
tags:
- US Statutes
summary: Which acts a state publisher lists against this section
description: 'The state session laws a publisher''s own tables list against one code section: which act added,
amended or repealed it, when the act took effect, and what the publisher printed. Start from a
section (an `actId` from `/us/statutes/search`, or a citation) and get to the act, then read the
act at `href`, or its text at `href` plus `/body`.
**Stage 1, and honest about it.** This reads the code-section TABLES that state publishers print
against their session laws ("sections affected"), through a reverse lookup. It is never read out of
the acts'' prose and it is **never a complete amendment history**: only acts we hold, in sessions we
hold (`coverage.sessionsHeld`), whose table lists the section in the printed form we map. Every row
says `basis: publisher_sections_affected` and `matchQuality: as_printed`. An empty `enactments` with
`supported: true` means "no held table lists this section", not "this section was never amended". The
published `coverage.note` says, per jurisdiction, what is not read: entries printed as lists or ranges
(`338-15, 21`), with a subsection pincite, or by an act''s own section number are not matched.
**Where it works.** CA, DC, HI, KY, MO, MS, NE, UT, WA: the jurisdictions where the publisher''s printed form was shown to
map to our section numbers against real data on both sides, and each section''s stored number must be
in the form that mapping was proven on. Any other jurisdiction (and any federal, regulation or
constitution section) answers `supported: false`, an empty list, a `reason` and a `coverage.note`,
and is **not charged**. A wrong match is worse than a miss, so equality is on the whole number after
folding case, spacing, dashes and the section sign: `71-24,104` does not match `71-24,10`, and `3` does
not match `3.1`. Where a publisher qualifies a section by code (California, Hawaii, DC) the printed code
must match too.
**Cost**: 1 credit. A section that does not exist is not charged. A supported section whose
answer is empty IS charged: "no held table lists it" is the answer you paid for, as an empty history
is on `/us/statutes/section/{actId}/changes`. An unsupported jurisdiction or section is refunded, and
so is any failure on our side (503, 500). `creditsConsumed` reports what was billed. A citation in
place of the id also pays the `/resolve` price, whether or not it resolves.
**What a row says.** `sessionLawId` and `href` name the act; `action` is the normalised
`added | amended | repealed | renumbered | other`, mapped only where the publisher''s legend is settled
and `other` otherwise (Nebraska prints no action; Mississippi''s `BF` is "brought forward", not a
change), and `actionAsPrinted` is always the publisher''s own code. `effectiveDates` are the ACT''s
dates, as printed, not necessarily this section''s. `sectionAsPrinted`, `codeAsPrinted` and
`actSectionAsPrinted` are verbatim. Rows are newest act first and one per printed entry: an act that
lists the section twice appears twice. `truncated` is true past 200 rows.
**Example**
```bash
curl "https://api.vaquill.ai/api/v1/us/statutes/section/STATE_MS_T27_C71_S27-71-5/enactments" \
-H "Authorization: Bearer $VAQUILL_API_KEY"
```
**Related endpoints**
- `GET /us/statutes/section/{actId}/changes` is what our refreshes observed to the section.
- `GET /us/session-laws/{sessionLawId}` reads an act from `href`; `/body` reads its text.
- `GET /us/statutes/coverage` says which sessions we hold and how complete each is, in each
jurisdiction''s `sessionLaws` block.'
operationId: get_section_enactments_api_v1_us_statutes_section__act_id__enactments_get
parameters:
- name: act_id
in: path
required: true
schema:
type: string
minLength: 3
maxLength: 200
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
examples:
- STATE_MS_T27_C71_S27-71-5
title: Act Id
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
responses:
'200':
description: 'The entries the publisher''s tables list against the section, or `supported: false` (not charged). Not a complete history.'
content:
application/json:
schema:
$ref: '#/components/schemas/SectionEnactmentsResponse'
examples:
supported:
summary: Miss. Code Ann. § 27-71-5, listed by a 2025 act (printed `027-0071-0005`)
value:
actId: STATE_MS_T27_C71_S27-71-5
jurisdiction: ms
supported: true
enactments:
- sessionLawId: SSL_MS_2025R_G_C301
href: /api/v1/us/session-laws/SSL_MS_2025R_G_C301
citation: Regular Session, ch. 301
title: AN ACT TO AUTHORIZE A PERSON WHO IS THE HOLDER OF A WINE MANUFACTURER'S PERMIT IN THIS STATE, OR WHO IS LICENSED OR PERMITTED OUTSIDE OF THE STATE TO ENGAGE IN THE ACTIVITY OF MANUFACTURING WINE, TO SELL AND SHIP WINE DIRECTLY TO RESIDENTS ...
sessionCode: 2025R
effectiveDates:
- date: '2025-07-01'
dateAsPrinted: July 1, 2025
action: amended
actionAsPrinted: A
sectionAsPrinted: 027-0071-0005
basis: publisher_sections_affected
matchQuality: as_printed
identityConfidence: single_source
textStatus: held
enactmentOutcome: signed
count: 1
truncated: false
coverage:
jurisdiction: ms
sessionsHeld:
- code: 2025R
label: 2025 Regular Session
status: complete
note: 'Mississippi: the Legislature''s bill-status record lists Code sections in a zero-padded form. A section brought forward (`BF`) or reenacted (`R`) is listed as `other`: the act named it and did not necessarily change it. Entries the publisher prints as a list or range (`338-15, 21`), with a subsection pincite, or by an act''s own section number are not matched, so a section can be amended by an act this answer does not list. '
creditsConsumed: 1
processingTimeMs: 96.4
supportedEmpty:
summary: 'A supported section no held table lists: charged, an answer and not a claim'
value:
actId: STATE_MS_T27_C71_S27-71-9
jurisdiction: ms
supported: true
enactments: []
count: 0
truncated: false
coverage:
jurisdiction: ms
sessionsHeld:
- code: 2025R
label: 2025 Regular Session
status: complete
note: 'Mississippi: the Legislature''s bill-status record lists Code sections in a zero-padded form. A section brought forward (`BF`) or reenacted (`R`) is listed as `other`: the act named it and did not necessarily change it. Entries the publisher prints as a list or range (`338-15, 21`), with a subsection pincite, or by an act''s own section number are not matched, so a section can be amended by an act this answer does not list. '
creditsConsumed: 1
processingTimeMs: 71.2
unsupported:
summary: 'A jurisdiction we do not read (Iowa): supported false, not charged'
value:
actId: STATE_IA_TXI_C459_S459.308
jurisdiction: ia
supported: false
reason: unsupported_jurisdiction
enactments: []
count: 0
truncated: false
coverage:
jurisdiction: ia
sessionsHeld: []
note: Code-section tables are read for CA, DC, HI, KY, MO, MS, NE, UT, WA. This jurisdiction's own table is held, but it prints an edition prefix and a subsection pincite (`2025 Code - 331.301 (27)`), so an exact lookup would find only the entries printed without one and silently under-report the rest.
creditsConsumed: 0
processingTimeMs: 38.9
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'404':
description: No such section. `reason` says why, `didYouMean` lists real ids. Not charged for the route; a citation's `/resolve` price is kept on an unresolved citation.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionNotFoundError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'503':
description: The statutes corpus or the session-laws database is temporarily unavailable. The charge is refunded; retry.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/section/{act_id}/cited-by:
get:
tags:
- US Statutes
summary: Find the sections that cite this one
description: 'The USC and CFR sections whose text cross-references a given section.
**Cost**: 2 credits. Not-found, failed lookups, and sections in a corpus with no
cross-reference index are not charged.
A section lookup tells you what a section cites; this is the other direction,
which provisions elsewhere in the code depend on this one. That is the question
behind "if this section changes, what else is affected".
Results are one row per citing section, in statutory order, never one row per
matching chunk.
**Scope**: USC and CFR. State codes and Federal Register rules carry no
section-level cross-reference index, so a section from either returns an empty
list with a `note` explaining why, and is refunded. When `note` is null, an
empty `citers` is a real answer: plenty of sections are cited by nothing.
**Completeness**: this reads references as the publisher wrote them, including
the title-relative form a section uses for its own neighbours. A citation that
the source never recorded in machine-readable form cannot appear here, so treat
a result as evidence of a citation rather than proof there are no others.'
operationId: get_section_cited_by_api_v1_us_statutes_section__act_id__cited_by_get
parameters:
- name: act_id
in: path
required: true
schema:
type: string
minLength: 3
maxLength: 200
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
examples:
- USC_T42_C21_S1983
title: Act Id
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
- name: limit
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
description: Maximum citing sections to return.
examples:
- 25
default: 25
title: Limit
description: Maximum citing sections to return.
responses:
'200':
description: The section plus the sections citing it.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteCitedByResponse'
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'404':
description: Section not found. `reason` says why.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionNotFoundError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/section/{act_id}/definitions:
get:
tags:
- US Statutes
summary: Get the defined terms that govern this section
description: 'The term definitions that apply to a section, parsed from its chapter''s
definitions section.
**Cost**: 4 credits. Not-found, failed lookups, chapters with no definitions
section, and definitions sections whose text is not yet ingested are all
refunded.
A statute''s terms of art are defined in a separate section elsewhere in the
chapter, not in the provision you are reading: "person" routinely includes
corporations, "employee" routinely excludes independent contractors. This
resolves that section and returns its terms.
`definitionsSection` names where the terms came from, so a definition can be
quoted and cited to the provision that actually carries it.
**Scope**: strongest on the U.S. Code, where a chapter''s definitions section is
conventionally structured and parses reliably. CFR and state codes are
best-effort: publishers format definitions inconsistently, and a definitions
section we can locate but not parse into terms returns empty with a `note` and
is refunded. `definitionsSection` is still populated in that case, so you can
fetch its text directly from `/section/{actId}/body` and read it yourself.
You are never charged for a chapter whose terms we could not return.'
operationId: get_section_definitions_api_v1_us_statutes_section__act_id__definitions_get
parameters:
- name: act_id
in: path
required: true
schema:
type: string
minLength: 3
maxLength: 200
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
examples:
- USC_T42_C21_S1983
title: Act Id
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
responses:
'200':
description: The section plus the defined terms governing it.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteDefinitionsResponse'
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'404':
description: Section not found. `reason` says why.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionNotFoundError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.vaquill.ai
description: Production
/api/v1/us/statutes/section/{act_id}/cross-state:
get:
tags:
- US Statutes
summary: Compare this provision against other states
description: 'Provisions in other states that address the same subject as a given state
statute section.
**Cost**: 6 credits. Not-found, failed lookups, and sections outside the state
statute corpus are not charged.
Every state words and numbers its provisions differently, so comparing a rule
across jurisdictions normally means running one search per state and reconciling
the results by hand. This starts from one section you already have and returns
the comparable provision elsewhere.
**At most one provision per state**, most similar first, so the response reads
as a jurisdiction comparison rather than a relevance list. `statesCovered` tells
you how many distinct states are represented.
**Scope**: state statute sections. USC, CFR, regulations and court rules return
empty with a `note`, refunded, since a federal section has no state analogue by
definition.
**What `similarity` is**: a retrieval score between 0 and 1, describing how
closely two provisions read. It is not a legal opinion. A high score means the
provisions cover the same ground, never that they impose the same obligation,
and the differences are usually the point. Treat this as the shortlist to read,
not the answer.'
operationId: get_section_cross_state_api_v1_us_statutes_section__act_id__cross_state_get
parameters:
- name: act_id
in: path
required: true
schema:
type: string
minLength: 3
maxLength: 200
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
examples:
- USC_T42_C21_S1983
title: Act Id
description: 'Section identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, which a lawyer writes as 42 U.S.C. § 1983). Take it from a `/us/statutes/search` or `/us/statutes/resolve` result.
A citation also works here: `26 U.S.C. § 1`, `42 USC 1983` or `Cal. Civ. Code § 1950.5` is resolved with the same resolver `/resolve` uses, and the section is served. A citation costs this endpoint''s price PLUS the `/resolve` price (2 credits), charged as its own line whether or not it resolves, exactly as `/resolve` charges; that is the same total as calling `/resolve` and then this endpoint, in one round trip. An exact act_id costs only this endpoint''s price. When a citation resolves, or when the id only matched after surrounding whitespace, quotes or a trailing period were removed, the response carries `resolvedFrom` saying what your input was matched as. Check it the way you would check a `/resolve` answer. A citation containing `/` cannot travel in a URL path segment; resolve it with `GET /us/statutes/resolve` instead.
Do not assemble an id from a citation: the title and section are derivable, but the CHAPTER is not, so `USC_T26_S1` misses. A miss returns 404 with `reason` and, where the section exists under another id, `didYouMean`.
State session laws (acts as enacted, ids starting `SSL_`) are not code sections: read them at `/us/session-laws/{sessionLawId}`.'
- name: limit
in: query
required: false
schema:
type: integer
maximum: 25
minimum: 1
description: Maximum states to return, one provision each.
examples:
- 5
default: 5
title: Limit
description: Maximum states to return, one provision each.
responses:
'200':
description: The section plus comparable provisions in other states.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteCrossStateResponse'
'401':
description: Invalid or missing API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'402':
description: Insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'404':
description: Section not found. `reason` says why.
content:
application/json:
schema:
$ref: '#/components/schemas/StatuteSectionNotFoundError'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetailError'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.vaquill.ai
description: Production
components:
schemas:
ApiFieldError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Loc
description: 'Where the bad value is: `body`, `query` or `path`, then the parameter name exactly as you send it (camelCase), then list indexes. A bare `["body"]` means the body as a whole was not a JSON object.'
examples:
- - body
- corpusType
msg:
type: string
title: Msg
description: What is wrong with the value, in plain English.
examples:
- Input should be 'USC', 'CFR' or 'STATE'
type:
type: string
title: Type
description: Machine-readable error kind, e.g. `missing`, `literal_error`, `json_invalid`.
examples:
- literal_error
type: object
required:
- loc
- msg
- type
title: ApiFieldError
description: One rejected field in a 422 response.
UsCorpusTypeInfo:
properties:
token:
type: string
title: Token
description: The `corpusType` value to pass to `/us/statutes/search`.
examples:
- REGULATION
description:
type: string
title: Description
description: What this corpus contains.
scope:
type: string
enum:
- federal
- state
title: Scope
description: '`federal` corpora appear under the `federal` jurisdiction; `state` corpora are scoped per state (pair with the `state` filter).'
browsable:
type: boolean
title: Browsable
description: Whether `GET /us/statutes/divisions` can walk this corpus level by level (titles, chapters, parts, codes, articles, rule sets). False for dated series such as the Federal Register and executive actions, and for corpora with no shared tree such as agency guidance. Every corpus is searchable either way; this only says whether you can NAVIGATE it instead of querying it.
default: false
examples:
- true
scopeNote:
anyOf:
- type: string
- type: 'null'
title: Scopenote
description: 'Present ONLY when we hold part of a corpus rather than all of it, and then it names both what is held and what is not. Null means no class-level exclusion applies. It is a STRUCTURED completeness claim, deliberately separate from `description` (prose a caller cannot act on). It says nothing about how recently the corpus was refreshed, a different fact: a filtered corpus can be, and `FEDERAL_REGISTER_NOTICE` is, refreshed weekly. `GET /boards` answers that one.'
examples:
- 'Held: notices withdrawing a proposed rule ... About 2.4% of Federal Register notices. Not held: Paperwork Reduction Act information collections ...'
sourceScopeNotes:
additionalProperties:
type: string
type: object
title: Sourcescopenotes
description: Scope statements for INDIVIDUAL sources inside this token, keyed by the `source` value you can filter on. `scopeNote` is the right unit for a token that is one corpus; it is the wrong unit for `AGENCY_GUIDANCE`, which fans out to more than thirty unrelated sources, so a partial source declares its own coverage here rather than describing every sibling. Empty when every source under this token is held whole.
examples:
- cms_iom: 'Held: the 204 chapter, appendix and exhibit documents ... Not held ... Pub. 100-12 (State Medicaid Manual) ... publish no chapters at all ...'
type: object
required:
- token
- description
- scope
title: UsCorpusTypeInfo
description: 'One entry in the coverage legend: what a `corpusType` token means.'
StatuteResolveBatchResponse:
properties:
results:
items:
$ref: '#/components/schemas/StatuteResolveBatchItem'
type: array
title: Results
description: 'One entry per de-duplicated input citation, in the order supplied. An unresolved citation is an entry with `resolved: false`, never an omission: a caller checking thirty citations needs to know which of them failed, and a shorter array cannot say.'
resolvedCount:
type: integer
title: Resolvedcount
description: How many of the submitted citations resolved to a code section. A citation answered only by a `sessionLaw` block is not counted.
default: 0
examples:
- 2
count:
type: integer
title: Count
description: Total entries in `results`, after de-duplication.
default: 0
examples:
- 3
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds.
default: 0.0
examples:
- 610.2
creditsConsumed:
type: number
title: Creditsconsumed
description: 'Credits actually charged. Read it rather than multiplying the list price by your input length: a backend failure on some citations refunds those, so this can be lower than 2 x `count`.'
default: 0.0
examples:
- 6
type: object
title: StatuteResolveBatchResponse
description: Response for `POST /us/statutes/resolve`.
FrRelatedDocument:
properties:
actId:
type: string
title: Actid
citation:
anyOf:
- type: string
- type: 'null'
title: Citation
title:
anyOf:
- type: string
- type: 'null'
title: Title
description: The related document's own title/heading, when known.
documentType:
anyOf:
- type: string
- type: 'null'
title: Documenttype
description: '`proposed_rule`, `final_rule`, or the raw Federal Register category otherwise.'
publicationDate:
anyOf:
- type: string
- type: 'null'
title: Publicationdate
description: Federal Register publication date (ISO 8601 date), when known.
type: object
required:
- actId
title: FrRelatedDocument
description: 'One other Federal Register document sharing a RIN with this one.
A Regulation Identifier Number (RIN) tracks one regulatory action through
its lifecycle -- a proposed rule, its final rule, and any later
corrections all carry the same RIN. This is what answers "what happened
to this proposed rule": look up its RIN''s other documents.'
StatuteSearchRequest:
properties:
query:
type: string
maxLength: 500
minLength: 2
title: Query
description: Search query in natural language.
examples:
- insider trading penalties
corpusType:
anyOf:
- type: string
enum:
- USC
- CFR
- STATE
- CONSTITUTION
- FEDERAL_RULES
- FEDERAL_LOCAL_RULES
- STATE_CONSTITUTION
- STATE_RULES
- EXECUTIVE_ACTION
- REGULATION
- FEDERAL_REGISTER
- FEDERAL_REGISTER_NOTICE
- AGENCY_GUIDANCE
- SENTENCING_GUIDELINES
- US_TAX_TREATY
- STATE_AGENCY_GUIDANCE
- STATE_AG_OPINION
- SESSION_LAW
- STATUTE_COMPILATION
- AGENCY_ADJUDICATION
- CFR_ANNUAL
- USC_ANNUAL
- items:
type: string
enum:
- USC
- CFR
- STATE
- CONSTITUTION
- FEDERAL_RULES
- FEDERAL_LOCAL_RULES
- STATE_CONSTITUTION
- STATE_RULES
- EXECUTIVE_ACTION
- REGULATION
- FEDERAL_REGISTER
- FEDERAL_REGISTER_NOTICE
- AGENCY_GUIDANCE
- SENTENCING_GUIDELINES
- US_TAX_TREATY
- STATE_AGENCY_GUIDANCE
- STATE_AG_OPINION
- SESSION_LAW
- STATUTE_COMPILATION
- AGENCY_ADJUDICATION
- CFR_ANNUAL
- USC_ANNUAL
type: array
- type: 'null'
title: Corpustype
description: '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 `/us/statutes/coverage` for the list of ingested jurisdictions), `CONSTITUTION` (U.S. Constitution), `FEDERAL_RULES` (FRCP / FRCrP / FRE / FRAP / FRBP), `STATE_CONSTITUTION` (state constitutions; call `/us/statutes/coverage` for the current jurisdiction list), `STATE_RULES` (state court rules; see `/us/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` (sub-regulatory federal agency guidance, 53 named sources spanning the tax, banking, securities, labor, immigration, health-privacy, export-control, intellectual-property, antitrust, energy and communications agencies; each is independently filterable with `source`, which lists them all), `STATE_AGENCY_GUIDANCE` (state-issued regulatory guidance, currently state Department of Insurance bulletins and circular letters; pair with `state`, and see `/us/statutes/coverage`), `SENTENCING_GUIDELINES` (US Sentencing Guidelines Manual), `US_TAX_TREATY` (US income tax treaties and protocols), `SESSION_LAW` (US Statutes at Large: federal public and private laws AS ENACTED, 1789 to date. This is the source the US Code is compiled from, so a section''s `publicLawCites` resolve here to the enacting text; call `/us/statutes/coverage` for the live section count). Omit to search across all corpora. The `enum` on this field is the complete token list, and `/us/statutes/coverage` serves a one-line description of each in its legend.'
examples:
- CFR
state:
anyOf:
- type: string
enum:
- federal
- al
- ak
- az
- ar
- ca
- co
- ct
- de
- dc
- fl
- ga
- gu
- hi
- id
- il
- in
- ia
- ks
- ky
- la
- me
- md
- ma
- mi
- mn
- ms
- mo
- mt
- ne
- nv
- nh
- nj
- nm
- ny
- nc
- nd
- mp
- oh
- ok
- or
- pa
- pr
- ri
- sc
- sd
- tn
- tx
- ut
- vt
- va
- wa
- wv
- wi
- wy
- items:
type: string
enum:
- federal
- al
- ak
- az
- ar
- ca
- co
- ct
- de
- dc
- fl
- ga
- gu
- hi
- id
- il
- in
- ia
- ks
- ky
- la
- me
- md
- ma
- mi
- mn
- ms
- mo
- mt
- ne
- nv
- nh
- nj
- nm
- ny
- nc
- nd
- mp
- oh
- ok
- or
- pa
- pr
- ri
- sc
- sd
- tn
- tx
- ut
- vt
- va
- wa
- wv
- wi
- wy
type: array
- type: 'null'
title: State
description: '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.'
examples:
- ca
code:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Code
description: 'Restrict to specific state statutory codes, e.g. `tx_pe` for the Texas Penal Code. Values are the `identifier`s returned by `GET /us/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 every Texas code at once.
With `corpusType=FEDERAL_RULES`, a value can instead be a federal rule set as `GET /us/statutes/divisions?corpusType=FEDERAL_RULES` lists it: `frcp`, `fre`, `frcpsuppadm`, or an appendix copy such as `uscapp_t28a_fre`. Without that corpusType a bare `frcp` is refused, because it cannot be told apart from a state code missing its state.'
examples:
- tx_pe
article:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Article
description: 'Scope a search to one or more articles. On `CONSTITUTION` and `STATE_CONSTITUTION` this is the article label as `GET /us/statutes/divisions` lists it (`Amendment XIV`, `Article IV`, `Preamble`). On `STATE` / `REGULATION` it is the article of a code divided by article instead of chapter, such as New York (`2-A` in `ny_jud`). This is the search side of `parent.article`: pass a hit''s `parent` straight back to search within its article.
Pass the `identifier` exactly as the listing returned it; a case slip such as `amendment xiv` also matches. Article labels repeat, so `article` needs a `corpusType` from one of those two families, `STATE_CONSTITUTION` also needs `state`, and `STATE` / `REGULATION` need the `code`. A request missing one is refused with 422 before anything is charged. String or list.'
examples:
- Amendment XIV
yearFrom:
anyOf:
- type: integer
maximum: 2100.0
minimum: 1700.0
- type: 'null'
title: Yearfrom
description: 'Only return sections dated in or after this year. Combine with `yearTo` for a window. A section matches on the first of three years it carries: the most recent amendment the publisher credits in its own history note; else its effective year, for a section adopted once and never amended; else, for corpora dated by publication rather than amendment (Federal Register proposed rules, agency guidance, adjudications, the treaty record), the document''s own publication or issue year. Every one of those tracks the LAW or the document, never when we last rebuilt the corpus. A section carrying none of the three is excluded once either bound is set, so an unbounded search returns strictly more.'
examples:
- 2020
yearTo:
anyOf:
- type: integer
maximum: 2100.0
minimum: 1700.0
- type: 'null'
title: Yearto
description: 'Only return sections dated in or before this year, on the same three years `yearFrom` describes. Note it filters the LAST such date, so a section amended in 2025 is excluded by `yearTo=2024` even though it existed in 2024. This is a currency filter, not point-in-time retrieval: the corpus holds one current text per citation.'
examples:
- 2026
excludeRepealed:
type: boolean
title: Excluderepealed
description: 'Drop sections whose own status says they are no longer operative: repealed, renumbered, transferred, recodified, rescinded, revoked, expired, superseded, omitted, reserved, and the rest of the dead and not-operative vocabulary (the full set is the one behind each result''s `goodLawStatus`).
**This removes what we KNOW is dead. It does not promise the remainder is good law.** A section survives this filter when its status is `in_force` OR when we hold no trustworthy repeal signal for its jurisdiction, and those two are not the same thing. Read `goodLawStatus` on each surviving result to tell them apart: `good_law` is checked, `unknown` is unchecked. Filtering on the status we store and reporting the verdict we derive are deliberately separate, because only the first is indexable.
**The United States Code is served from a stored annual edition** (`year` 2024, `currentThrough` 2025-01-06), so a section repealed after that edition closed still carries `actStatus: in_force` and survives this filter. Every USC result therefore reports `goodLawStatus: unknown`, which is the honest answer and the one this field''s second paragraph tells you to read. Use `/section/{actId}/changes` for the timeline on a section you depend on.'
default: false
examples:
- true
actStatus:
anyOf:
- type: string
enum:
- abolished
- deleted
- expired
- in_force
- inactive
- non_precedential
- not_funded
- not_yet_effective
- omitted
- proposed
- recodified
- recompiled
- rejected
- relocated
- removed
- renumbered
- repealed
- rescinded
- reserved
- revoked
- superseded
- terminated
- transferred
- unconstitutional
- vacant
- vacated
- vetoed
- withdrawn
- items:
type: string
enum:
- abolished
- deleted
- expired
- in_force
- inactive
- non_precedential
- not_funded
- not_yet_effective
- omitted
- proposed
- recodified
- recompiled
- rejected
- relocated
- removed
- renumbered
- repealed
- rescinded
- reserved
- revoked
- superseded
- terminated
- transferred
- unconstitutional
- vacant
- vacated
- vetoed
- withdrawn
type: array
- type: 'null'
title: Actstatus
description: 'Positively scope to one or more raw publisher statuses, e.g. `"repealed"` to find only dead law, or `["in_force"]` for only sections affirmatively marked current. This is the inverse of `excludeRepealed` and is what you want for a compliance diff that asks what was LOST rather than what remains.
Values are the `actStatus` returned on each result. Combining a dead status here with `excludeRepealed: true` contradicts itself and is rejected with 422 rather than silently returning nothing.'
examples:
- repealed
changedSince:
anyOf:
- type: string
pattern: ^\d{4}-\d{2}-\d{2}$
- type: 'null'
format: date
title: Changedsince
description: 'Only return sections we have OBSERVED change on or after this date (`YYYY-MM-DD`). This is the sync filter: it turns a lookup API into something a nightly job can poll, without creating a board watch per jurisdiction.
**These are observed changes, not effective dates.** A refresh compared the publisher against the copy we held and found it different; the date is when we SAW it, an upper bound on when it took effect. It is the same event stream `GET /us/statutes/section/{actId}/changes` serves per section, so a hit here has a history there.
**Coverage is bounded by capture, not by the age of the law.** Change capture began long after the corpus did, it is per-source, and events are swept at 24 months. An empty result means no captured change in the window, never that nothing was amended.
Narrow with `corpusType` and `state` for a tighter window: the change set is resolved to concrete sections before the search runs, and a window matching too many sections is rejected with a 422 that says so rather than silently truncating your answer.'
examples:
- '2026-08-01'
agency:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Agency
description: Federal Register agency slug, e.g. `environmental-protection-agency`. The agency's full name (`Environmental Protection Agency`) or its Federal Register acronym (`EPA`, `e.p.a.`) resolves to the same slug; an acronym the Federal Register gives to more than one agency (`FS`) or a value naming no agency the corpus holds is a 422, never a charge. Pass a list to match any of several. Applies to `FEDERAL_REGISTER` and `EXECUTIVE_ACTION`; other corpora carry no agency, so combining this with them returns nothing.
examples:
- environmental-protection-agency
documentType:
anyOf:
- type: string
enum:
- final
- proposed
- presidential
- type: 'null'
title: Documenttype
description: 'Federal Register document stage: `final` (a rule in force), `proposed` (an NPRM), or `presidential` (a Presidential Document, the `EXECUTIVE_ACTION` corpus). The same distinction appears in each row''s `actId` prefix (`FR_RULE_` vs `FR_PRORULE_`).'
examples:
- final
publishedFrom:
anyOf:
- type: string
pattern: ^\d{4}-\d{2}-\d{2}$
- type: 'null'
format: date
title: Publishedfrom
description: 'Only return Federal Register documents published on or after this date (`YYYY-MM-DD`). This is the PUBLICATION date, which is not the same as `yearFrom`: that filters the version year of a section.'
examples:
- '2024-01-01'
publishedTo:
anyOf:
- type: string
pattern: ^\d{4}-\d{2}-\d{2}$
- type: 'null'
format: date
title: Publishedto
description: Only return Federal Register documents published on or before this date.
examples:
- '2024-12-31'
titleNumber:
anyOf:
- type: integer
minimum: 1.0
- type: 'null'
title: Titlenumber
description: 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).
examples:
- 17
chapter:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Chapter
description: '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.'
examples:
- '21'
part:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Part
description: '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.'
examples:
- '240'
source:
anyOf:
- type: string
enum:
- administrative_guidance
- ag_precedent
- agency_guidance
- bia_precedent
- bis_advisory_opinion
- cfpb_circular
- cfpb_enforcement_action
- cfpb_supervisory_guidance
- cftc_staff_letter
- cms_iom
- copyright_circular
- copyright_compendium
- cpsc_advisory_opinion
- cpsc_secg
- ddtc_commodity_jurisdiction
- ddtc_guidance
- dfars
- dfars_pgi
- doe_appliance_guidance
- doj_business_review
- doj_justice_manual
- doj_leniency
- eeoc_guidance
- far
- fcc_declaratory_ruling
- fdic_fil
- ferc_policy_statement
- fincen_amla_material
- fincen_boi_compliance_guide
- fincen_boi_faq
- fincen_boi_rule_qa
- fincen_guidance
- fincen_ruling
- frap
- frb_sr_letter
- frbp
- frcp
- frcrp
- fre
- ftc_administrative_decision
- ftc_advisory_opinion
- ftc_advocacy_filing
- ftc_hsr_interpretation
- ftc_policy_statement
- hhs_ocr_hipaa_faq
- hhs_ocr_hipaa_guidance
- hhs_ocr_resolution_agreement
- immigration_admin_precedent
- irs_announcement
- irs_irm
- irs_notice
- irs_rev_proc
- irs_rev_rul
- irs_written_determination
- merger_guidelines
- mpep
- mspb_nonprecedential
- mspb_precedential
- nlrb_advice_memo
- nlrb_board_decision
- nlrb_gc_memo
- occ_bulletin
- occ_interpretive_letter
- ofac_faq
- olc_opinion
- sct
- sec_commission_opinion
- senate_treaty
- senate_treaty_document
- senate_treaty_resolution
- ssa_ruling
- state_financial_bulletin
- state_insurance_bulletin
- tmep
- us_tax_treaty
- us_tax_treaty_technical_explanation
- uscis_policy_manual
- whd_foh
- whd_opinion_letter
- items:
type: string
enum:
- administrative_guidance
- ag_precedent
- agency_guidance
- bia_precedent
- bis_advisory_opinion
- cfpb_circular
- cfpb_enforcement_action
- cfpb_supervisory_guidance
- cftc_staff_letter
- cms_iom
- copyright_circular
- copyright_compendium
- cpsc_advisory_opinion
- cpsc_secg
- ddtc_commodity_jurisdiction
- ddtc_guidance
- dfars
- dfars_pgi
- doe_appliance_guidance
- doj_business_review
- doj_justice_manual
- doj_leniency
- eeoc_guidance
- far
- fcc_declaratory_ruling
- fdic_fil
- ferc_policy_statement
- fincen_amla_material
- fincen_boi_compliance_guide
- fincen_boi_faq
- fincen_boi_rule_qa
- fincen_guidance
- fincen_ruling
- frap
- frb_sr_letter
- frbp
- frcp
- frcrp
- fre
- ftc_administrative_decision
- ftc_advisory_opinion
- ftc_advocacy_filing
- ftc_hsr_interpretation
- ftc_policy_statement
- hhs_ocr_hipaa_faq
- hhs_ocr_hipaa_guidance
- hhs_ocr_resolution_agreement
- immigration_admin_precedent
- irs_announcement
- irs_irm
- irs_notice
- irs_rev_proc
- irs_rev_rul
- irs_written_determination
- merger_guidelines
- mpep
- mspb_nonprecedential
- mspb_precedential
- nlrb_advice_memo
- nlrb_board_decision
- nlrb_gc_memo
- occ_bulletin
- occ_interpretive_letter
- ofac_faq
- olc_opinion
- sct
- sec_commission_opinion
- senate_treaty
- senate_treaty_document
- senate_treaty_resolution
- ssa_ruling
- state_financial_bulletin
- state_insurance_bulletin
- tmep
- us_tax_treaty
- us_tax_treaty_technical_explanation
- uscis_policy_manual
- whd_foh
- whd_opinion_letter
type: array
- type: 'null'
title: Source
description: '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: `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), `irs_irm` (Internal Revenue Manual (IRS internal procedure)), `merger_guidelines` (DOJ & FTC Merger Guidelines (2023)), `doj_leniency` (DOJ Antitrust Division Leniency Policy), `doj_business_review` (DOJ Antitrust Division Business Review Letters (1991-2021)), `cms_iom` (CMS Medicare Internet-Only Manuals (instruction to Medicare contractors, not a regulation)), `copyright_circular` (US Copyright Office Circulars), `copyright_compendium` (Compendium of U.S. Copyright Office Practices, Third Edition (2014, 2017 and 2021 editions)), `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)), `fincen_boi_faq` (FinCEN Beneficial Ownership Information FAQs), `fincen_boi_rule_qa` (FinCEN BOI Rulemaking Q&As (final rule and interim final rule)), `fincen_boi_compliance_guide` (FinCEN Small Entity Compliance Guide (Beneficial Ownership Information Reporting)), `fincen_amla_material` (FinCEN Anti-Money Laundering Act of 2020 Implementation Material), `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)), `cfpb_supervisory_guidance` (CFPB Supervisory Guidance), `cfpb_circular` (CFPB Consumer Financial Protection Circulars), `dfars_pgi` (DFARS PGI (Procedures, Guidance, and Information)), `ftc_advisory_opinion` (FTC Advisory Opinions), `ftc_policy_statement` (FTC Policy Statements (1967-present)), `ftc_hsr_interpretation` (FTC HSR Premerger Notification Interpretations: the Commission''s formal interpretations under 16 C.F.R. 803.30 (1978-2000, a closed series) and the Premerger Notification Office''s informal interpretations (1983-present; the publisher serves none from 1997)), `ftc_advocacy_filing` (FTC Advocacy Filings: comments and letters to state legislatures, state courts, governors and other federal agencies on the competition effects of a proposed measure (1985-present). Advisory only: they bind nobody and decide no case), `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), `whd_opinion_letter` (DOL Wage and Hour Division Opinion, Ruling and Administrator Interpretation Letters (FLSA, FMLA, DBRA, SCA, CCPA, MSPA; 1993-present)), `whd_foh` (DOL Wage and Hour Field Operations Handbook (WHD internal enforcement procedure, not law; 22 chapters)), `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), `ofac_faq` (OFAC (Office of Foreign Assets Control) Frequently Asked Questions), `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), `eeoc_guidance` (EEOC (Equal Employment Opportunity Commission) Enforcement and Policy Guidance, including Compliance Manual sections), `irs_written_determination` (IRS Written Determinations under 26 U.S.C. § 6110: Private Letter Rulings (PLR), Technical Advice Memoranda (TAM) and Chief Counsel Advice (CCA). Each is directed only to the taxpayer who requested it and, by § 6110(k)(3), may not be used or cited as precedent).
`US_TAX_TREATY` sources: `us_tax_treaty` (U.S. Bilateral Income and Estate Tax Treaties), `us_tax_treaty_technical_explanation` (Treasury Technical Explanations (article-by-article commentary on a tax treaty)), `senate_treaty` (Senate Treaty Records (transmittal, parties and proceedings)), `senate_treaty_resolution` (Senate Resolutions of Advice and Consent, including the reservations, understandings and declarations that narrow a treaty''s effect in US law), `senate_treaty_document` (Treaty Documents (CDOC TDOC series): the President''s message transmitting a treaty to the Senate, with the instrument''s text).
`STATE_AGENCY_GUIDANCE` sources: `state_insurance_bulletin` (State Department of Insurance Bulletins), `state_financial_bulletin` (State Financial-Institutions Regulator Bulletins (banking, credit unions, trust companies, escrow agents, consumer lenders, money transmitters; AZ and OR only, where that regulator shares an index with the insurance regulator)).
`AGENCY_ADJUDICATION` sources: `mspb_precedential` (MSPB Precedential Decisions), `mspb_nonprecedential` (MSPB Nonprecedential Orders), `olc_opinion` (DOJ Office of Legal Counsel Opinions (official bound volumes, 1933-2020)), `cfpb_enforcement_action` (CFPB Enforcement Actions), `sec_commission_opinion` (SEC Commission Opinions and Adjudicatory Orders), `bia_precedent` (BIA Precedent Decisions (I&N Dec.)), `ag_precedent` (Attorney General Immigration Decisions (I&N Dec.)), `immigration_admin_precedent` (INS and USCIS Administrative Precedent Decisions (I&N Dec.)), `nlrb_board_decision` (NLRB Board Decisions (bounded window; see coverage.mdx for the exact years covered)), `ftc_administrative_decision` (FTC Part 3 Administrative Decisions). Every result carries its own `source`, so you can pass a hit''s value straight back. An unrecognized value is rejected with 422.'
examples:
- sct
fields:
anyOf:
- items:
type: string
enum:
- abstract
- actId
- actStatus
- action
- adoptedAfterCurrentThrough
- adoptingCitations
- agencies
- agencySlugs
- alternateCitations
- amendmentHistory
- amendmentNote
- amendmentYears
- amendmentsCount
- articleName
- articleNumber
- audience
- body
- breadcrumb
- caseName
- chapter
- chapterName
- citation
- citationShort
- committeeNote
- corpusType
- court
- crossReferencesCfr
- crossReferencesUsc
- currencyNote
- currencyYear
- currentThrough
- datesText
- displayLabel
- displayPath
- documentNumber
- documentSubtype
- documentTypeLabel
- docxUrl
- edition
- effectiveDate
- effectiveDateRaw
- excerpt
- expirationDate
- expirationDateRaw
- externalUrl
- federalRegisterCitations
- forum
- frCommentsCloseOn
- frCorrectionOf
- frCorrections
- frDocketIds
- frEffectiveOn
- frEndPage
- frRegulationIdNumbers
- frRegulationsDotGovUrl
- frRelatedDocuments
- frSignificant
- frStartPage
- frVolume
- goodLawStatus
- govInfoHtmlUrl
- govInfoPdfUrl
- granuleId
- history
- historyEffectiveDate
- htmlUrl
- implementingRegulations
- issueDate
- issueDateRaw
- issuingAgency
- languageCode
- lastAmendedDate
- lastAmendedDateRaw
- lastAmendedYear
- lawImplemented
- licenseNote
- originalEnactmentDate
- originalEnactmentDateRaw
- packageId
- parent
- part
- partName
- pdfUrl
- pendingAdoptions
- popularName
- president
- priorEffectiveDates
- program
- publicLawCites
- publicLaws
- publicationDate
- publicationDateRaw
- publisherKey
- referencedShortTitles
- relatedCitations
- relatedDocuments
- releaseDate
- releaseDateRaw
- relevanceScore
- renumberedTo
- renumberedToLabel
- requesters
- rescindedOn
- rescindedOnRaw
- reviewDate
- reviewDateRaw
- ruleSet
- ruleSetCode
- sectionNumber
- sectionTitle
- settlementAmount
- signingDate
- signingDateRaw
- source
- sourceCharEnd
- sourceCharStart
- sourceCredit
- sourceNote
- sourcePageEnd
- sourcePageStart
- sourceUrl
- state
- stateHtmlUrl
- statutoryAuthority
- subchapter
- subchapterName
- subject
- subjectNumber
- subpart
- subpartName
- subtitle
- subtitleName
- supersededBy
- supersedes
- supersessionActions
- textUrl
- title
- titleName
- titleNumber
- topLevelTitle
- topics
- transferredTo
- transferredToLabel
- versionId
- volume
- wordCount
- xmlUrl
- year
type: array
uniqueItems: true
- items:
type: string
enum:
- abstract
- actId
- actStatus
- action
- adoptedAfterCurrentThrough
- adoptingCitations
- agencies
- agencySlugs
- alternateCitations
- amendmentHistory
- amendmentNote
- amendmentYears
- amendmentsCount
- articleName
- articleNumber
- audience
- body
- breadcrumb
- caseName
- chapter
- chapterName
- citation
- citationShort
- committeeNote
- corpusType
- court
- crossReferencesCfr
- crossReferencesUsc
- currencyNote
- currencyYear
- currentThrough
- datesText
- displayLabel
- displayPath
- documentNumber
- documentSubtype
- documentTypeLabel
- docxUrl
- edition
- effectiveDate
- effectiveDateRaw
- excerpt
- expirationDate
- expirationDateRaw
- externalUrl
- federalRegisterCitations
- forum
- frCommentsCloseOn
- frCorrectionOf
- frCorrections
- frDocketIds
- frEffectiveOn
- frEndPage
- frRegulationIdNumbers
- frRegulationsDotGovUrl
- frRelatedDocuments
- frSignificant
- frStartPage
- frVolume
- goodLawStatus
- govInfoHtmlUrl
- govInfoPdfUrl
- granuleId
- history
- historyEffectiveDate
- htmlUrl
- implementingRegulations
- issueDate
- issueDateRaw
- issuingAgency
- languageCode
- lastAmendedDate
- lastAmendedDateRaw
- lastAmendedYear
- lawImplemented
- licenseNote
- originalEnactmentDate
- originalEnactmentDateRaw
- packageId
- parent
- part
- partName
- pdfUrl
- pendingAdoptions
- popularName
- president
- priorEffectiveDates
- program
- publicLawCites
- publicLaws
- publicationDate
- publicationDateRaw
- publisherKey
- referencedShortTitles
- relatedCitations
- relatedDocuments
- releaseDate
- releaseDateRaw
- relevanceScore
- renumberedTo
- renumberedToLabel
- requesters
- rescindedOn
- rescindedOnRaw
- reviewDate
- reviewDateRaw
- ruleSet
- ruleSetCode
- sectionNumber
- sectionTitle
- settlementAmount
- signingDate
- signingDateRaw
- source
- sourceCharEnd
- sourceCharStart
- sourceCredit
- sourceNote
- sourcePageEnd
- sourcePageStart
- sourceUrl
- state
- stateHtmlUrl
- statutoryAuthority
- subchapter
- subchapterName
- subject
- subjectNumber
- subpart
- subpartName
- subtitle
- subtitleName
- supersededBy
- supersedes
- supersessionActions
- textUrl
- title
- titleName
- titleNumber
- topLevelTitle
- topics
- transferredTo
- transferredToLabel
- versionId
- volume
- wordCount
- xmlUrl
- year
type: array
- type: 'null'
title: Fields
description: 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.
examples:
- - title
- excerpt
- state
limit:
type: integer
maximum: 50.0
minimum: 1.0
title: Limit
description: Number of results to return per page.
default: 10
offset:
type: integer
maximum: 70.0
minimum: 0.0
title: Offset
description: 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.
default: 0
includeBody:
type: boolean
title: Includebody
description: 'Return the full text of every hit inline, on each result''s `body`, instead of making you fetch it per section afterwards.
**Why it exists.** Search returns a ranking preview, so the alternative is a search call plus one `/section/{actId}/body` call per hit. This collapses a whole page to a single round trip.
**Cost**: the 4-credit search PLUS the ordinary 6-credit body price for each row that actually returns text. Ten rows with text is 4 + 60 = 64 credits. A row whose text cannot be resolved comes back with `body: null` and is NOT charged, so read `creditsConsumed` rather than computing it from `limit` -- it is the same price as fetching them yourself, so this buys latency, not a discount.
⚠️ It multiplies with `limit`. `limit: 50` with this set is 304 credits in a single call. Page deliberately.
Prefer this over raising `excerptChars`: the excerpt is windowed around the match and can begin mid-section, dropping a leading subsection marker, so it is not safe to quote. `body` is the publisher''s text.'
default: false
examples:
- true
excerptChars:
type: integer
maximum: 4000.0
minimum: 100.0
title: Excerptchars
description: Characters of matching text to include in each result's `excerpt`. The excerpt is a ranking preview; use `/us/statutes/section/{actId}/body` for the full text. Default 500.
default: 500
matchType:
type: string
enum:
- any
- all
- phrase
title: Matchtype
description: '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 word must appear in the text) or `phrase` for an exact-phrase match (the query''s words, contiguous and in order), e.g. a defined term or a statutory phrase, when you want lexical precision. Both match WHOLE words, case-insensitively, ignoring punctuation: `act` does not match `fact`, `10b-5` matches `10b 5`, and `§ 1983` matches `section 1983`. 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.'
default: any
examples:
- phrase
additionalProperties: false
type: object
required:
- query
title: StatuteSearchRequest
example:
corpusType: STATE
limit: 5
matchType: any
query: data breach notification deadline
state: ca
StatuteResolveBatchItem:
properties:
resolved:
type: boolean
title: Resolved
description: True when this citation resolved to an exact section.
inputCitation:
type: string
title: Inputcitation
description: The citation string you asked to resolve, echoed back.
section:
anyOf:
- $ref: '#/components/schemas/StatuteResult'
- type: 'null'
description: The resolved section, or null when this citation did not resolve.
subsection:
anyOf:
- type: string
- type: 'null'
title: Subsection
description: Parsed pinpoint subsection when the citation carried one. See the single-citation route for the full semantics, including the case where the publisher issues a larger unit than the citation names.
citationOutsideFilters:
anyOf:
- $ref: '#/components/schemas/CitationOutsideFilters'
- type: 'null'
description: 'Set only when `resolved` is false because the batch''s `state` or `corpusType` scope excludes a section this citation DOES name, e.g. a federal citation under `state: ca`. The scope is a constraint, so the verdict stays `resolved: false`; this says why. Retry without the scope named in `excludedBy` to resolve it. No extra charge.'
matchedCorpus:
anyOf:
- type: string
const: session_law
- type: 'null'
title: Matchedcorpus
description: Present only when the citation names a STATE session law (an act as enacted, for example `CHAPTER 2025-12` or `S.F.No. 1552`) rather than a code section. `resolved` stays false and `section` stays null, because both describe a code section; the law is in `sessionLaw`.
sessionLaw:
anyOf:
- $ref: '#/components/schemas/SessionLawCitationMatch'
- type: 'null'
description: The state session law this citation names, when it names no code section. `status` is `matched` (one law, read it at `href`) or `ambiguous` (several, all in `candidates`, none chosen for you). Absent when the citation resolved to a section, and whenever session laws cannot be checked. No extra charge.
type: object
required:
- resolved
- inputCitation
title: StatuteResolveBatchItem
description: 'One citation''s verdict inside a batch response.
Deliberately the same field names as `StatuteResolveResponse` minus the
per-request bookkeeping, so a caller migrating from the single route reads
each item with the code it already has.'
StatuteSectionsRequest:
properties:
actIds:
items:
type: string
type: array
maxItems: 50
minItems: 1
title: Actids
description: 'Section identifiers from a prior `/us/statutes/search` response. Up to 50 per call. Duplicates are collapsed, and order is preserved in the response. Each id encodes the citation''s hierarchy: `USC_T42_C21_S1983` is Title 42, Chapter 21, Section 1983. DO NOT BUILD THESE FROM A CITATION: the chapter/article/part segments exist only in the data, so `Tex. Property Code § 93.005` is `STATE_TX_Cpr_C93_S93.005`, not `STATE_TX_C93_S93.005`. Assembled ids miss, and `notFoundDetail` will say so and suggest the real ones. A citation (`26 U.S.C. § 1`) is also accepted in place of an id: it is resolved and served, and listed in `resolved`.'
examples:
- - USC_T42_C21_S1983
- CFR_T17_P240_S240_10b5_1
includeBody:
type: boolean
title: Includebody
description: 'Return each section''s full text inline on `body`, instead of metadata only. Adds the ordinary body price per row that returns text, so 20 ids resolving 20 bodies is 40 + 120 = 160 credits. Rows whose text cannot be resolved come back with `body: null` and are not charged for it, so read `creditsConsumed` rather than computing the total. Without this, use `/us/statutes/section/{actId}/body` one id at a time.'
default: false
examples:
- true
type: object
required:
- actIds
title: StatuteSectionsRequest
description: Batch metadata lookup. See `POST /us/statutes/sections`.
example:
actIds:
- USC_T42_C21_S1983
- USC_T42_C21_S1981a
AsOfProvenance:
properties:
requested:
type: string
title: Requested
description: The date you asked for, echoed back (`YYYY-MM-DD`).
examples:
- '2026-01-15'
engine:
type: string
enum:
- stored_edition
- observed_change
title: Engine
description: 'WHICH BACKEND ANSWERED. `asOf` is one parameter over two engines and they make different promises.
`stored_edition`: the answer is a publisher''s own printed edition of the text, held verbatim. Used wherever we hold published editions, which today is `corpusType=CFR_ANNUAL` (annual editions per title), the US Code, the Copyright Compendium and OFAC FAQs. The date is resolved to a held edition and that edition''s text is returned as printed.
Coverage under this engine is per corpus and is NOT continuous. The CFR annual editions tile the calendar per title; the others are ENUMERATED editions with gaps between them. A date that falls in a gap returns `source: "unavailable"` with `outOfCoverageReason` and NO text, rather than the neighbouring edition, because the text may have changed in the gap. For the US Code in particular, most dates are currently out of coverage: see `outOfCoverageReason` for which editions we hold.
`observed_change`: the answer is RECONSTRUCTED from changes we observed, and reaches back only as far as capture began for that source. Every other corpus.
Read this before `isBounded`, which does not make the same claim on both engines.'
default: observed_change
examples:
- observed_change
source:
type: string
enum:
- live
- reconstructed
- unavailable
- published
title: Source
description: 'The detail WITHIN the engine above.
On `observed_change` -- `live`: we captured no change to this section after your date, so today''s text is what stood then as far as we ever saw. `reconstructed`: rebuilt from the before-side of the first change we captured after your date. `unavailable`: we know it changed but cannot rebuild the earlier text, so no text is returned. That is different from the section being empty, and different again from it not existing.
On `stored_edition` -- `published`: an edition we hold answered, verbatim. `unavailable`: the date is out of coverage for this section and no text is returned, and `outOfCoverageReason` says why in a sentence. Out of coverage means the date falls outside every edition we hold, or inside a gap between two of them; it is never answered from a neighbouring edition.'
examples:
- reconstructed
existed:
type: boolean
title: Existed
description: False when the earliest thing we ever captured for this section is its ADDITION and that addition postdates your date, so it demonstrably did not exist yet. A real answer, not a miss.
basisChangeId:
anyOf:
- type: integer
- type: 'null'
title: Basischangeid
description: The change event whose before-side supplied this text. Null when `source` is `live`. Pass it to `/us/statutes/section/{actId}/changes` to see the event this answer rests on.
examples:
- 91
observedFrom:
anyOf:
- type: string
- type: 'null'
title: Observedfrom
description: The earliest change we ever captured for this section. Null when we captured none. This is how far back the reconstruction can see, and it is a property of when capture began for this source, not of the age of the law.
examples:
- '2026-08-09T04:10:00Z'
resolvedEditionYear:
anyOf:
- type: integer
- type: 'null'
title: Resolvededitionyear
description: '`stored_edition` only. The revision year actually served, read from the edition''s own printed revision statement. 🔴 This is NOT always the year the schedule computes: a publisher reprints an unchanged volume into the next year without re-dating it, so the 2024 printing of 4 CFR is the January 1 2019 revision. Render THIS year, never `scheduledEditionYear`.'
examples:
- 2019
scheduledEditionYear:
anyOf:
- type: integer
- type: 'null'
title: Schedulededitionyear
description: '`stored_edition` only. The edition the revision schedule says SHOULD cover your date. Differs from `resolvedEditionYear` whenever the publisher reprinted an unchanged volume. Exposed so the disagreement is auditable, not so it can be displayed.'
examples:
- 2024
editionsObserved:
anyOf:
- items:
type: integer
type: array
- type: 'null'
title: Editionsobserved
description: '`stored_edition` only. Every edition year in which this exact text was observed, enumerated. An ENUMERATION, not a range: a year between the first and last that is absent here is an edition nobody read, and a date resolving to it is reported out of coverage rather than answered from a neighbour.'
examples:
- - 2014
- 2015
- 2016
outOfCoverageReason:
anyOf:
- type: string
- type: 'null'
title: Outofcoveragereason
description: Why no text was returned, in a sentence safe to show a reader. Null when text was returned.
isBounded:
type: boolean
title: Isbounded
description: '⚠️ This flag does NOT make the same claim on both engines. Read `engine` first.
On `stored_edition`, TRUE means your date falls inside the editions we actually parsed for this title, so the text is a verified published printing rather than an inference. FALSE means out of coverage, and no text is returned.
On `observed_change`, TRUE means: we observed no change affecting your date, and that is NOT the same as there having been none.
Set when your date predates `observedFrom`, or when we captured no change for this section at all. Change capture began long after the corpus did and is per-source, so a bounded answer is our best reconstruction rather than a verified historical text. Surface it. Rendering a bounded answer as authoritative point-in-time law makes a claim we did not make.'
coverage:
type: string
title: Coverage
description: Prose statement of the same limit, safe to show a reader verbatim.
type: object
required:
- requested
- source
- existed
- isBounded
- coverage
title: AsOfProvenance
description: 'Where an `asOf` body came from, and how far the evidence reaches.
Every field but `text` on the parent exists so this answer cannot be
over-read. The corpus holds ONE current text per citation; an earlier one is
RECONSTRUCTED from observed changes, and observation started when it started.'
StatuteNeighborsResponse:
properties:
section:
$ref: '#/components/schemas/StatuteResult'
description: The section you asked about.
previous:
items:
$ref: '#/components/schemas/StatuteResult'
type: array
title: Previous
description: Sections immediately BEFORE this one in the same container, nearest last.
next:
items:
$ref: '#/components/schemas/StatuteResult'
type: array
title: Next
description: Sections immediately AFTER this one, nearest first.
container:
anyOf:
- type: string
- type: 'null'
title: Container
description: Human label for the grouping the neighbours were drawn from, e.g. the chapter name. Neighbours never cross this boundary.
resolvedFrom:
anyOf:
- $ref: '#/components/schemas/SectionIdentifierResolution'
- type: 'null'
description: 'Null when the section is exactly the act_id you sent. Otherwise how your input was matched: a citation, or an act_id with transport damage (whitespace, quotes, a trailing period) removed.'
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 240.5
creditsConsumed:
type: number
title: Creditsconsumed
description: '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.'
default: 0.0
examples:
- 4
type: object
required:
- section
title: StatuteNeighborsResponse
description: Response for `GET /us/statutes/section/{act_id}/related`.
EnactmentCoverage:
properties:
jurisdiction:
anyOf:
- type: string
- type: 'null'
title: Jurisdiction
description: Lowercase two-letter code of the section's jurisdiction. Null for a section that is not a state statute (a federal section).
examples:
- ms
sessionsHeld:
items:
$ref: '#/components/schemas/EnactmentSession'
type: array
title: Sessionsheld
description: 'The sessions of this jurisdiction whose code-section tables are held. A session not listed contributes nothing to `enactments`: an empty list says we read nothing, not that the section was untouched. Empty for an unsupported jurisdiction.'
note:
type: string
title: Note
description: 'In words: where the list comes from for this jurisdiction, and what it does not read. Show it beside the list: `enactments` is what the publisher''s table prints, never a complete amendment history.'
examples:
- 'Mississippi: the Legislature''s bill-status record lists Code sections in a zero-padded form. Entries the publisher prints as a list or range are not matched.'
type: object
required:
- note
title: EnactmentCoverage
description: What this answer is read from, and what it is not.
StatuteSearchResponse:
properties:
results:
items:
$ref: '#/components/schemas/StatuteResult'
type: array
title: Results
description: Matching sections, most relevant first. Ordering is by relevance, not statutory order; use `/us/statutes/section/{actId}/related` for what sits either side of a section in its code.
count:
type: integer
title: Count
description: '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.'
default: 0
total:
type: integer
title: Total
description: DEPRECATED alias for `count`, kept for backward compatibility. The name reads as a corpus-wide match total, which it never was. Use `count` instead.
default: 0
deprecated: true
offset:
type: integer
title: Offset
description: The offset applied to this page.
default: 0
hasMore:
type: boolean
title: Hasmore
description: Whether more results exist beyond this page.
default: false
changedSectionCount:
anyOf:
- type: integer
- type: 'null'
title: Changedsectioncount
description: 'Only present when `changedSince` is set: how many sections changed in that window, before ranking. Compare it against `count`. `changedSince` is a filter on a RANKED search, so a window holding more sections than one query can return is normal and the page you get is the most relevant slice of it, not all of it. When this number is larger than you can page to, the filter is a trigger rather than an inventory: subscribe to the board and poll `GET /watches/{id}/changes`, which is complete and costs no credits.'
examples:
- 19055
rankingDegraded:
type: boolean
title: Rankingdegraded
description: 'True when the relevance model (a cross-encoder) was unavailable and the results are in hybrid-retrieval order instead. The sections are still real matches for the query, but the ordering is coarser and `relevanceScore` is a retrieval score rather than a 0-1 relevance, so do not threshold on it. Such a ranking is never cached: retrying shortly returns the fully ranked result once the model recovers.'
default: false
examples:
- false
noGoodMatch:
anyOf:
- type: boolean
- type: 'null'
title: Nogoodmatch
description: True when nothing in the corpus looks on point for this query. It says nothing about whether the top result is the right section; check its citation and jurisdiction. False when the top result clears the relevance bar, or when the query is a citation or a section number that matched exactly. Null when `rankingDegraded` is true, because the bar is on the relevance model's scale. The same on every page of a query.
examples:
- false
matchQuality:
anyOf:
- type: string
enum:
- exact
- strong
- moderate
- weak
- none
- type: 'null'
title: Matchquality
description: 'How strongly the evidence says result #1 answers the query. exact: a citation or section-number match. strong: the top result was correct about 94% of the time in our measurements (about 91% on questions whose answer is a statute or regulation). moderate: about 67%. weak: about 35%. none: nothing on point (same as noGoodMatch). Measured on our labelled evaluation set; tiers may be re-cut as the index changes, so treat unknown values as moderate. Null when `rankingDegraded` is true. The same on every page of a query.'
examples:
- strong
citationOutsideFilters:
anyOf:
- $ref: '#/components/schemas/CitationOutsideFilters'
- type: 'null'
description: 'Your query is a citation to a real section that your filters exclude. To read it, retry without the filters named in `excludedBy`, or call `GET /us/statutes/resolve` without them. Null when the query is not a citation, when the citation is inside your filters (it then ranks first), or when it names no section we hold. `results` are unchanged: a filter is a promise, so the section is reported here and not forced into the results. The same on every page of a query.'
query:
type: string
title: Query
description: The search query used.
default: ''
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 240.5
creditsConsumed:
type: number
title: Creditsconsumed
description: '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.'
default: 0.0
examples:
- 4
type: object
title: StatuteSearchResponse
UsStatutesCoverageEnvelope:
properties:
data:
$ref: '#/components/schemas/UsStatutesCoverageResponse'
meta:
$ref: '#/components/schemas/UsFreeCallMeta'
type: object
required:
- data
- meta
title: UsStatutesCoverageEnvelope
description: 'What `GET /us/statutes/coverage` returns: the matrix under `data`.
Declared because the route used to return a hand-built dict with no
`response_model`, so its published schema was `{}`. Every field was
discoverable only if the example happened to show it, and the MCP tool and
generated clients built from the document got no types at all for the one
endpoint that exists to be read before anything else.'
SessionLawSessionCoverage:
properties:
code:
type: string
title: Code
description: Session code, for example `2025R`.
examples:
- 2025R
label:
anyOf:
- type: string
- type: 'null'
title: Label
description: The session's canonical label.
examples:
- 2025 Regular Session
type:
anyOf:
- type: string
- type: 'null'
title: Type
description: '`regular`, `special`, `extraordinary`, `fiscal`, `veto` or `unknown`.'
examples:
- regular
year:
anyOf:
- type: integer
- type: 'null'
title: Year
description: The year the session convened, the year `code` starts with.
examples:
- 2025
status:
type: string
enum:
- complete
- partial
title: Status
description: '`complete` when every law the publisher lists for the session is accounted for. Anything less is `partial`: a law missing from a partial session is not evidence that it does not exist, and asking for one by id or citation answers `session_not_fully_collected`, free of charge, rather than a plain not found.'
examples:
- complete
servedCount:
type: integer
minimum: 0.0
title: Servedcount
description: 'Laws from this session we serve: every one we answer for by id, citation or list, whether or not we hold its text (`notHeldCount` of them have none). Laws whose text is withheld are not counted here, they are `withheldCount`. `servedCount + withheldCount` is `registryCount`, less any law still being verified.'
examples:
- 39
withheldCount:
type: integer
minimum: 0.0
title: Withheldcount
description: 'Laws from this session we hold and list but whose text is withheld for a measured defect (`textStatus: withheld`). They are real laws: their records are served, their text is not.'
default: 0
examples:
- 0
notHeldCount:
type: integer
minimum: 0.0
title: Notheldcount
description: 'Of the laws counted in `servedCount`, how many have no text held (`textStatus: not_held` or `pending`). A subset of `servedCount`, not an addition to it: do not add it to `servedCount` or `withheldCount`.'
default: 0
examples:
- 0
registryCount:
type: integer
minimum: 0.0
title: Registrycount
description: 'Every law of this session in our registry, whether or not its text is held: `servedCount + withheldCount`. Any difference is a law still being verified, which is neither.'
default: 0
examples:
- 39
collectedCount:
type: integer
minimum: 0.0
title: Collectedcount
description: Laws from this session whose text we have collected, served or withheld. Compare it with `denominator.value` to see how much of the session we hold.
default: 0
examples:
- 39
denominator:
anyOf:
- $ref: '#/components/schemas/SessionLawDenominator'
- type: 'null'
description: How many laws the session is expected to hold, and where that figure comes from. Null when it could not be read.
examples:
- derivation: The publisher's complete listing of this session names 296 measures. We hold 43 of them; the rest are not yet collected.
kind: complete_listing
value: 296
openGaps:
type: integer
minimum: 0.0
title: Opengaps
description: Laws the publisher lists for this session that we could not collect and have not yet. 0 on a `complete` session.
default: 0
examples:
- 0
measuredAt:
anyOf:
- type: string
- type: 'null'
title: Measuredat
description: When this session's coverage was last measured, ISO 8601 UTC.
examples:
- '2026-10-05T09:07:12+00:00'
type: object
required:
- code
- status
- servedCount
title: SessionLawSessionCoverage
description: One legislative session's session-law coverage.
StatuteChangesResponse:
properties:
actId:
type: string
title: Actid
description: The act_id of the section served. Equal to your request unless `resolvedFrom` is set, in which case it is the id your citation or cleaned-up input resolved to.
examples:
- CFR_T21_P314_S314_50
section:
anyOf:
- $ref: '#/components/schemas/StatuteResult'
- type: 'null'
description: 'The section as it stands today. NULL is meaningful and not an error: it means the section is no longer in the corpus, which is exactly the case when the newest change is a `removed`. The history below is still the answer.'
changes:
items:
$ref: '#/components/schemas/StatuteChangeEvent'
type: array
title: Changes
description: Observed changes, newest first by default. Empty is a real answer, and it means NO CAPTURED CHANGE, not that the section has never been amended. See `coverage`.
total:
type: integer
title: Total
description: 'Size of `changes` on this page, not a corpus-wide count: it is capped by `limit`.'
default: 0
examples:
- 3
hasMore:
type: boolean
title: Hasmore
description: True when the page filled to `limit`, so more may sit behind it. Page with `beforeId` (walking back) or `sinceId` (walking forward) rather than by raising `limit`.
default: false
cursor:
anyOf:
- type: integer
- type: 'null'
title: Cursor
description: Highest `id` on this page, or null when the page is empty. Carry it into `sinceId` to poll for what is new; keep the one you hold when a page comes back empty.
examples:
- 91
observedFrom:
anyOf:
- type: string
- type: 'null'
title: Observedfrom
description: 'The earliest change we ever captured for this section: the OBSERVATION HORIZON this history sits on. Read it before treating an empty or short list as the section''s full history.
**Null means we have never captured a change for this section**, so an empty `changes` list is not evidence that it is stable. A non-null value with an empty list means your filters or cursor excluded everything we hold, which is a different answer.
`coverage` states the same caveat in prose. This is the fact behind it, and it is the same field, meaning the same thing, as `asOf.observedFrom` on `GET /section/{actId}/body`.'
examples:
- '2026-08-14T04:10:00Z'
coverage:
type: string
title: Coverage
description: What this history can and cannot tell you, in one sentence. Change capture began well after the corpus itself did and is swept on a retention window, so this endpoint reports the changes we OBSERVED in that window, never the section's full legislative history. Read it before treating an empty list as 'unchanged'.
examples:
- Observed changes only, from when capture began for this source through today, retained 24 months. Not a full legislative history.
resolvedFrom:
anyOf:
- $ref: '#/components/schemas/SectionIdentifierResolution'
- type: 'null'
description: 'Null when the section is exactly the act_id you sent. Otherwise how your input was matched: a citation, or an act_id with transport damage (whitespace, quotes, a trailing period) removed.'
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 18.4
creditsConsumed:
type: number
title: Creditsconsumed
description: 'Credits actually charged for this call. Read it rather than assuming the list price: failed and refunded work bills 0.'
default: 0.0
examples:
- 1
type: object
required:
- actId
- coverage
title: StatuteChangesResponse
description: Response for `GET /us/statutes/section/{act_id}/changes`.
SessionLawCitationMatch:
properties:
status:
type: string
enum:
- matched
- ambiguous
title: Status
description: '`matched`: the citation names exactly one session law, described by the fields beside this one. `ambiguous`: it names several, every one is in `candidates`, and none was chosen for you (Minnesota''s 2025 regular and first special sessions each have a Chapter 1).'
examples:
- matched
sessionLawId:
anyOf:
- type: string
- type: 'null'
title: Sessionlawid
description: The law the citation names. Null when `status` is `ambiguous`.
examples:
- SSL_MN_2025R_G_Y2025_C1
citation:
anyOf:
- type: string
- type: 'null'
title: Citation
description: Canonical citation for the act. Null when ambiguous.
examples:
- CHAPTER 1--S.F.No. 1552
jurisdiction:
anyOf:
- type: string
- type: 'null'
title: Jurisdiction
description: Two-letter state code. Null when ambiguous.
examples:
- mn
session:
anyOf:
- $ref: '#/components/schemas/SessionLawSession'
- type: 'null'
description: The session the law was enacted in. Null when ambiguous.
textStatus:
anyOf:
- type: string
enum:
- held
- withheld
- not_held
- pending
- type: 'null'
title: Textstatus
description: '`held` or `withheld`, as on the law itself. Null when ambiguous.'
examples:
- held
title:
anyOf:
- type: string
- type: 'null'
title: Title
description: The act's title, as the publisher prints it (usually `An act relating to ...`). Null when none is printed. Null when ambiguous.
examples:
- An act relating to agriculture; modifying financial reporting requirements for grain buyers; amending Minnesota Statutes 2024, section 223.17, subdivision 6.
billNumber:
anyOf:
- type: string
- type: 'null'
title: Billnumber
description: The bill the act originated as, as the publisher prints it. Null when none is printed. Null when ambiguous.
examples:
- S.F.No. 1552
approvedDate:
anyOf:
- type: string
format: date
- type: 'null'
title: Approveddate
description: Date the governor (or the equivalent authority) approved the act, ISO 8601. Never an effective date. Null when none is printed. Null when ambiguous.
examples:
- '2025-03-17'
effectiveFirst:
anyOf:
- type: string
format: date
- type: 'null'
title: Effectivefirst
description: 'Earliest of the act''s effective dates we hold, ISO 8601. Null when we hold none: a date the publisher does not print, or prints as a relative rule, is not guessed. Read every date from `effectiveDates` on `GET /us/session-laws/{sessionLawId}`. Null when ambiguous.'
examples:
- '2025-09-01'
effectiveLast:
anyOf:
- type: string
format: date
- type: 'null'
title: Effectivelast
description: 'Latest of the act''s effective dates we hold, ISO 8601: equal to `effectiveFirst` when the act takes effect on one date. Null when we hold none. Null when ambiguous.'
examples:
- '2025-09-01'
enactmentOutcome:
anyOf:
- type: string
- type: 'null'
title: Enactmentoutcome
description: 'How the measure became, or failed to become, law: `signed`, `became_law_without_signature`, `veto_overridden`, `line_item_veto` (signed with some items vetoed), `vetoed` and `pocket_veto` (not law), `not_presented`, `approved_by_voters`, or `unknown` when the publisher does not say. Null when ambiguous.'
examples:
- signed
sourceUrl:
anyOf:
- type: string
- type: 'null'
title: Sourceurl
description: The government publisher's own URL for the act's text, so a citation answer links to the primary source. Null when we hold no text source from a government host. Null when ambiguous.
examples:
- https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/
href:
anyOf:
- type: string
- type: 'null'
title: Href
description: Where to read the law, relative to the API host. Null when ambiguous.
examples:
- /api/v1/us/session-laws/SSL_MN_2025R_G_Y2025_C1
candidates:
items:
$ref: '#/components/schemas/SessionLawCitationCandidate'
type: array
title: Candidates
description: Every law an ambiguous citation names. Empty when `status` is `matched`.
defaultSessionLawId:
anyOf:
- type: string
- type: 'null'
title: Defaultsessionlawid
description: On an ambiguous citation, the publisher's conventional reading when there is one. Never served for you.
examples:
- null
type: object
required:
- status
title: SessionLawCitationMatch
description: A citation that names a STATE session law rather than a code section.
UsDivisionNode:
properties:
identifier:
type: string
title: Identifier
description: The division's identifier within its parent, e.g. `42` (title), `21` (chapter), `240` (part), `tx_pe` (state code), `frcp` (federal rule set), `Article III` (article), or `1983` (section). Pass it back verbatim.
name:
anyOf:
- type: string
- type: 'null'
title: Name
description: Human-readable name of the division, when the source provides one.
kind:
type: string
title: Kind
description: 'Division kind, which is also the filter to drill into it with: `title` (as `titleNumber`), `chapter`, `part`, `code`, `article`, or `section` (a leaf; fetch it by `actId`).'
isLeaf:
type: boolean
title: Isleaf
description: True for sections (terminal nodes); false for interior divisions.
actId:
anyOf:
- type: string
- type: 'null'
title: Actid
description: Section identifier, present only on leaf sections. Pass it to `/us/statutes/section/{actId}`.
sectionCount:
anyOf:
- type: integer
minimum: 0.0
- type: 'null'
title: Sectioncount
description: Sections under an interior division. Null on leaf sections.
type: object
required:
- identifier
- kind
- isLeaf
title: UsDivisionNode
description: 'One child division in a `GET /us/statutes/divisions` listing.
Interior nodes (titles, chapters, parts, codes, articles) carry a
`sectionCount` and `isLeaf: false`; drill into one by passing its
`identifier` back as the filter its `kind` names. Leaf nodes are sections and carry an `actId` you can pass to
`/us/statutes/section/{actId}`.'
StatuteCountResponse:
properties:
count:
type: integer
title: Count
description: 'Sections in scope. This is a SECTION count, not a passage count: long sections are stored as several passages and are counted once.'
default: 0
examples:
- 43638
isExact:
type: boolean
title: Isexact
description: True when the figure is an exact count rather than an estimate. Present so a future estimated mode cannot be mistaken for this one.
default: true
examples:
- true
scope:
additionalProperties: true
type: object
title: Scope
description: The filters that produced this figure, echoed back. A count with no scope attached is not reproducible, and an ignored filter would otherwise be invisible.
examples:
- corpusType: REGULATION
state: tx
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds.
default: 0.0
examples:
- 85.2
creditsConsumed:
type: number
title: Creditsconsumed
description: Credits actually charged for this call.
default: 0.0
examples:
- 1
type: object
title: StatuteCountResponse
description: Response for `POST /us/statutes/count`.
UsFreeCallMeta:
properties:
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time to build the response, in milliseconds.
examples:
- 142.7
creditsConsumed:
type: number
title: Creditsconsumed
description: 'Always 0: this endpoint is free.'
default: 0
examples:
- 0
type: object
required:
- processingTimeMs
title: UsFreeCallMeta
description: '`meta` on a free discovery endpoint.'
StatuteResult:
properties:
actId:
type: string
title: Actid
description: Unique section identifier (e.g., 'USC_T42_C21_S1983', 'CFR_T17_P240_S240_10b5_1').
citation:
anyOf:
- type: string
- type: 'null'
title: Citation
description: Full citation (e.g., '42 U.S.C. § 1983 (2024)', '17 C.F.R. § 240.10b5-1 (2026)').
citationShort:
anyOf:
- type: string
- type: 'null'
title: Citationshort
description: Short citation (e.g., '42 U.S.C. § 1983', '17 C.F.R. § 240.10b5-1').
title:
anyOf:
- type: string
- type: 'null'
title: Title
description: Section title.
corpusType:
anyOf:
- type: string
- type: 'null'
title: Corpustype
description: One of `USC`, `CFR`, `STATE`, `CONSTITUTION`, `FEDERAL_RULES`, `STATE_CONSTITUTION`, `STATE_RULES`, or `EXECUTIVE_ACTION`.
state:
anyOf:
- type: string
- type: 'null'
title: State
description: 2-letter lowercase state code (e.g. `ca`, `tx`) when the row belongs to a state corpus. `federal` for federal rows.
source:
anyOf:
- type: string
- type: 'null'
title: Source
description: '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: `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), `irs_irm` (Internal Revenue Manual (IRS internal procedure)), `merger_guidelines` (DOJ & FTC Merger Guidelines (2023)), `doj_leniency` (DOJ Antitrust Division Leniency Policy), `doj_business_review` (DOJ Antitrust Division Business Review Letters (1991-2021)), `cms_iom` (CMS Medicare Internet-Only Manuals (instruction to Medicare contractors, not a regulation)), `copyright_circular` (US Copyright Office Circulars), `copyright_compendium` (Compendium of U.S. Copyright Office Practices, Third Edition (2014, 2017 and 2021 editions)), `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)), `fincen_boi_faq` (FinCEN Beneficial Ownership Information FAQs), `fincen_boi_rule_qa` (FinCEN BOI Rulemaking Q&As (final rule and interim final rule)), `fincen_boi_compliance_guide` (FinCEN Small Entity Compliance Guide (Beneficial Ownership Information Reporting)), `fincen_amla_material` (FinCEN Anti-Money Laundering Act of 2020 Implementation Material), `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)), `cfpb_supervisory_guidance` (CFPB Supervisory Guidance), `cfpb_circular` (CFPB Consumer Financial Protection Circulars), `dfars_pgi` (DFARS PGI (Procedures, Guidance, and Information)), `ftc_advisory_opinion` (FTC Advisory Opinions), `ftc_policy_statement` (FTC Policy Statements (1967-present)), `ftc_hsr_interpretation` (FTC HSR Premerger Notification Interpretations: the Commission''s formal interpretations under 16 C.F.R. 803.30 (1978-2000, a closed series) and the Premerger Notification Office''s informal interpretations (1983-present; the publisher serves none from 1997)), `ftc_advocacy_filing` (FTC Advocacy Filings: comments and letters to state legislatures, state courts, governors and other federal agencies on the competition effects of a proposed measure (1985-present). Advisory only: they bind nobody and decide no case), `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), `whd_opinion_letter` (DOL Wage and Hour Division Opinion, Ruling and Administrator Interpretation Letters (FLSA, FMLA, DBRA, SCA, CCPA, MSPA; 1993-present)), `whd_foh` (DOL Wage and Hour Field Operations Handbook (WHD internal enforcement procedure, not law; 22 chapters)), `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), `ofac_faq` (OFAC (Office of Foreign Assets Control) Frequently Asked Questions), `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), `eeoc_guidance` (EEOC (Equal Employment Opportunity Commission) Enforcement and Policy Guidance, including Compliance Manual sections), `irs_written_determination` (IRS Written Determinations under 26 U.S.C. § 6110: Private Letter Rulings (PLR), Technical Advice Memoranda (TAM) and Chief Counsel Advice (CCA). Each is directed only to the taxpayer who requested it and, by § 6110(k)(3), may not be used or cited as precedent).
`US_TAX_TREATY` sources: `us_tax_treaty` (U.S. Bilateral Income and Estate Tax Treaties), `us_tax_treaty_technical_explanation` (Treasury Technical Explanations (article-by-article commentary on a tax treaty)), `senate_treaty` (Senate Treaty Records (transmittal, parties and proceedings)), `senate_treaty_resolution` (Senate Resolutions of Advice and Consent, including the reservations, understandings and declarations that narrow a treaty''s effect in US law), `senate_treaty_document` (Treaty Documents (CDOC TDOC series): the President''s message transmitting a treaty to the Senate, with the instrument''s text).
`STATE_AGENCY_GUIDANCE` sources: `state_insurance_bulletin` (State Department of Insurance Bulletins), `state_financial_bulletin` (State Financial-Institutions Regulator Bulletins (banking, credit unions, trust companies, escrow agents, consumer lenders, money transmitters; AZ and OR only, where that regulator shares an index with the insurance regulator)).
`AGENCY_ADJUDICATION` sources: `mspb_precedential` (MSPB Precedential Decisions), `mspb_nonprecedential` (MSPB Nonprecedential Orders), `olc_opinion` (DOJ Office of Legal Counsel Opinions (official bound volumes, 1933-2020)), `cfpb_enforcement_action` (CFPB Enforcement Actions), `sec_commission_opinion` (SEC Commission Opinions and Adjudicatory Orders), `bia_precedent` (BIA Precedent Decisions (I&N Dec.)), `ag_precedent` (Attorney General Immigration Decisions (I&N Dec.)), `immigration_admin_precedent` (INS and USCIS Administrative Precedent Decisions (I&N Dec.)), `nlrb_board_decision` (NLRB Board Decisions (bounded window; see coverage.mdx for the exact years covered)), `ftc_administrative_decision` (FTC Part 3 Administrative Decisions). Pass it back as the `source` search filter to scope to just this one source. Null for corpora with only one source, which includes every state''s statutes and regulations.
Not a link, and not where the text came from: it is a filter token. The official link to the publisher''s text is `sourceUrl`.'
examples:
- sct
year:
anyOf:
- type: integer
- type: 'null'
title: Year
description: The year this row was ingested, not the year of the law. Most ingesters stamp the capture year (`time.gmtime().tm_year`) and a few pin a literal, so the bulk of the corpus reads the year it was captured. **Do not filter or reason about currency with it.** `lastAmendedYear` carries the amendment year, `currentThrough` and `currencyNote` carry the publisher's own currency statement, and `goodLawStatus` carries the status.
relevanceScore:
anyOf:
- type: number
- type: 'null'
title: Relevancescore
description: 'Relevance score, normalized to roughly 0-1. Higher means a better match for ranking within one response. It is a relative ranking signal, not a calibrated confidence or probability, so do not compare scores across different queries or treat a fixed value as a quality threshold. Exception: a query that resolves to an exact citation (e.g. ''42 U.S.C. § 1983'', ''Cal. Civ. Code § 1950.5'', ''Fed. R. Civ. P. 12'') always scores that section 1.0, since it is a certain match rather than a ranked one -- a natural-language or keyword query never returns 1.0 by comparison. **null on any endpoint that did not rank**: fetching a section by id, a batch fetch, or a section embedded in an intelligence response. When the response carries `rankingDegraded: true`, the relevance model was unavailable and this is a retrieval score on a different, much smaller scale: still a valid ORDER, not a 0-1 relevance.'
excerpt:
type: string
title: Excerpt
description: Text excerpt (up to 500 characters).
default: ''
body:
anyOf:
- type: string
- type: 'null'
title: Body
description: 'Full plain text of the section. Present ONLY when the request set `includeBody: true`, and null on any row whose text could not be resolved (those rows are not charged for a body).
This is the actual statutory text, not the `excerpt`. The two are different things and the difference matters for quoting: `excerpt` is a ranking preview windowed around the match, so it can begin mid-section and drop a leading subsection marker -- measured 2026-09-02, four of five California rows lost their opening `(a) `. `body` is the document as the publisher printed it.'
examples:
- (a) If within a reasonable time after written or oral notice...
titleNumber:
anyOf:
- type: string
- type: 'null'
title: Titlenumber
description: USC/CFR/state title number (e.g. '26', '13A').
titleName:
anyOf:
- type: string
- type: 'null'
title: Titlename
description: Title name (e.g., 'The Public Health and Welfare').
chapter:
anyOf:
- type: string
- type: 'null'
title: Chapter
description: Chapter number or identifier.
chapterName:
anyOf:
- type: string
- type: 'null'
title: Chaptername
description: Chapter name.
sectionNumber:
anyOf:
- type: string
- type: 'null'
title: Sectionnumber
description: Section number (e.g., '1983', '240.10b5-1').
sectionTitle:
anyOf:
- type: string
- type: 'null'
title: Sectiontitle
description: The section's own heading (e.g., 'Rule G. Forfeiture Actions In Rem'). Distinct from `title`, which is the hierarchical display path.
displayPath:
anyOf:
- type: string
- type: 'null'
title: Displaypath
description: Full hierarchical path (Title > Chapter > Section).
breadcrumb:
anyOf:
- items:
additionalProperties:
type: string
type: object
type: array
- type: 'null'
title: Breadcrumb
description: Structured breadcrumb trail for navigation.
parent:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Parent
description: 'Query for `GET /us/statutes/divisions` that lists this section''s siblings (its containing chapter, part, code, article or federal rule set). Pass it straight back to walk up the hierarchy, or spread it into a `POST /us/statutes/search` body to search within that container: every key it carries is also a search filter. Null when the container cannot be determined.'
subchapter:
anyOf:
- type: string
- type: 'null'
title: Subchapter
description: Subchapter number or identifier.
subchapterName:
anyOf:
- type: string
- type: 'null'
title: Subchaptername
description: Subchapter name.
part:
anyOf:
- type: string
- type: 'null'
title: Part
description: Part number or identifier (CFR/state).
partName:
anyOf:
- type: string
- type: 'null'
title: Partname
description: Part name.
subpart:
anyOf:
- type: string
- type: 'null'
title: Subpart
description: Subpart number or identifier (CFR).
subpartName:
anyOf:
- type: string
- type: 'null'
title: Subpartname
description: Subpart name.
popularName:
anyOf:
- type: string
- type: 'null'
title: Popularname
description: Popular/common name of the act (e.g. 'Truth in Lending Act'), when known.
actStatus:
anyOf:
- type: string
- type: 'null'
title: Actstatus
description: 'Raw section status: `in_force`, `repealed`, `renumbered`, `transferred`, `omitted`, `reserved`, `vacant`, or `unconstitutional`.'
goodLawStatus:
anyOf:
- type: string
- type: 'null'
title: Goodlawstatus
description: 'Derived currency verdict: `good_law`, `not_good_law`, `not_operative`, or `unknown`. Conservative: states without a reliable repeal signal report `unknown` rather than over-claiming. `null` when currency checking is disabled.'
currencyNote:
anyOf:
- type: string
- type: 'null'
title: Currencynote
description: Source's 'current through ...' note, when published.
renumberedTo:
anyOf:
- type: string
- type: 'null'
title: Renumberedto
description: 'Where the publisher says this section went, when `actStatus` is `renumbered`. RAW SOURCE FORM, not an `actId` and not a citation: `self:4651` means section 4651 of this same title, `34:10105` means section 10105 of Title 34. Do not pass it to a section endpoint. Read `renumberedToLabel` instead, or resolve the citation it names through `/us/statutes/resolve`.'
examples:
- self:4651
renumberedToLabel:
anyOf:
- type: string
- type: 'null'
title: Renumberedtolabel
description: '`renumberedTo` written out, e.g. `section 10105 of Title 34`. Present whenever `renumberedTo` is.'
examples:
- section 10105 of Title 34
transferredTo:
anyOf:
- type: string
- type: 'null'
title: Transferredto
description: 'Where the publisher says this section went, when `actStatus` is `transferred`. Same raw source form as `renumberedTo`, and the same warning: it is not an `actId`.'
examples:
- 34:10105
transferredToLabel:
anyOf:
- type: string
- type: 'null'
title: Transferredtolabel
description: '`transferredTo` written out. Present whenever `transferredTo` is.'
examples:
- section 10105 of Title 34
issueDate:
anyOf:
- type: string
- type: 'null'
title: Issuedate
description: Issue/publication date of this version, as `YYYY-MM-DD`, when known. See `issueDateRaw` for the publisher's wording on the rare source that does not print ISO.
examples:
- '1999-05-25'
issueDateRaw:
anyOf:
- type: string
- type: 'null'
title: Issuedateraw
description: The issue date as the publisher writes it, present only when it differs from `issueDate`. Null across the corpus today; it exists so a source that starts printing prose cannot silently put prose in a field documented as a date.
crossReferencesCfr:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Crossreferencescfr
description: CFR cross-references parsed from the text, e.g. `['1.6011-4']`.
crossReferencesUsc:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Crossreferencesusc
description: USC cross-references parsed from the text, e.g. `['42:1983']`. `'self:'` denotes a reference to another section of the same title.
statutoryAuthority:
anyOf:
- items:
additionalProperties: true
type: object
type: array
- type: 'null'
title: Statutoryauthority
description: 'For a CFR/eCFR section: the USC (or other) citations in its ''Authority'' note that authorize the rule, e.g. `[{''type'': ''usc'', ''title'': 15, ''section'': ''78o'', ''display'': ''15 U.S.C. 78o''}]`. Null for non-regulation corpora.'
implementingRegulations:
anyOf:
- items:
additionalProperties: true
type: object
type: array
- type: 'null'
title: Implementingregulations
description: 'For a USC section: the CFR parts that implement it, derived from the reverse of every CFR section''s own `statutoryAuthority`, e.g. `[{''cfrTitle'': 17, ''part'': ''240'', ''partName'': ''...'', ''display'': ''17 CFR Part 240''}]`. Null for non-USC corpora.'
frRegulationIdNumbers:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Frregulationidnumbers
description: Regulation Identifier Number(s) (RIN) assigned to this rule.
frDocketIds:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Frdocketids
description: Rulemaking docket ID(s) this document was filed under.
frEffectiveOn:
anyOf:
- type: string
- type: 'null'
title: Freffectiveon
description: The rule's effective date (ISO 8601 date), when set.
frCommentsCloseOn:
anyOf:
- type: string
- type: 'null'
title: Frcommentscloseon
description: Public-comment deadline (ISO 8601 date). Proposed rules only.
frSignificant:
anyOf:
- type: boolean
- type: 'null'
title: Frsignificant
description: Whether the Federal Register marked this rule 'economically significant' (EO 12866).
frCorrectionOf:
anyOf:
- type: string
- type: 'null'
title: Frcorrectionof
description: Federal Register document number this document corrects, when this is a correction.
frCorrections:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Frcorrections
description: Federal Register document number(s) that later corrected this document.
frRegulationsDotGovUrl:
anyOf:
- type: string
- type: 'null'
title: Frregulationsdotgovurl
description: Link to this document's public comment docket on regulations.gov.
frRelatedDocuments:
anyOf:
- items:
$ref: '#/components/schemas/FrRelatedDocument'
type: array
- type: 'null'
title: Frrelateddocuments
description: Other Federal Register documents sharing this document's RIN(s) (its proposed rule, its final rule, and any corrections), most recent first. Only populated on `GET /us/statutes/section/{actId}` for a row that carries `frRegulationIdNumbers`; always null on `/us/statutes/search` results, since computing it needs a follow-up lookup that is too expensive to run per search result.
subject:
anyOf:
- type: string
- type: 'null'
title: Subject
description: The publisher's own subject or document-type label, where it prints one (for example a state insurance bulletin's `RE:` line, or its listing category such as `Rescission`).
rescindedOn:
anyOf:
- type: string
- type: 'null'
title: Rescindedon
description: The date the document was rescinded or withdrawn, as `YYYY-MM-DD`, when the source states one. See `rescindedOnRaw`.
examples:
- '2016-07-01'
rescindedOnRaw:
anyOf:
- type: string
- type: 'null'
title: Rescindedonraw
description: The rescission date as the publisher writes it, present only when it differs from `rescindedOn`.
sourceCredit:
anyOf:
- type: string
- type: 'null'
title: Sourcecredit
description: 'The Office of the Law Revision Counsel''s credit line for a **USC** section: the acts that enacted and amended it, in order, e.g. `June 25, 1948, ch. 646, 62 Stat. 869; Pub. L. 85-508, Sec. 12, July 7, 1958, 72 Stat. 348`. Parentheses stripped, whitespace normalized.
USC only, and null on a USC section that prints no credit (a transferred, repealed or reclassified stub). CFR sections carry the same fact as a list in `federalRegisterCitations` instead, which is why the shape differs; no other corpus publishes one.'
amendmentYears:
anyOf:
- items:
type: integer
type: array
- type: 'null'
title: Amendmentyears
description: 'Distinct years the section was amended, parsed from the publisher''s history note.
**Always newest first, and de-duplicated.** Ingesters store the array in both orders (eCFR writes newest first, state regulations and state statutes write oldest first), so the order is imposed at serve time and the served order is the only one to rely on. Years outside 1789..(current year) are dropped rather than served: amendment dates are parsed out of prose and a note can yield a sunset or substitution date that is not an amendment at all.'
lastAmendedYear:
anyOf:
- type: integer
- type: 'null'
title: Lastamendedyear
description: Most recent amendment year, when known. Re-derived at serve time as `max(amendmentYears)`, so it never exceeds the list served beside it. Falls back to the publisher's own scalar only when `amendmentYears` is empty, and only when that scalar is itself within 1789..(current year).
amendmentsCount:
anyOf:
- type: integer
- type: 'null'
title: Amendmentscount
description: 'How many amendments the publisher recorded for this section. **Not the length of `amendmentYears`, and it is not safe to derive one from the other.**
For regulations and court rules this counts amending EVENTS: one per register citation, filing or history entry, so a section amended twice in the same year counts 2 against a single entry in `amendmentYears`. The two disagree on a large share of the regulation and court-rule corpora, so read each for what it is. For the other corpora, and for any source that publishes no per-event record, it falls back to the number of distinct years, which understates a section amended twice in one year.'
currentThrough:
anyOf:
- type: string
- type: 'null'
title: Currentthrough
description: The date the publisher states this text is current through, e.g. `2025-01-06`. Set on every USC section. `currencyNote` carries the same fact as prose where a publisher writes it that way.
pendingAdoptions:
anyOf:
- items:
additionalProperties: true
type: object
type: array
- type: 'null'
title: Pendingadoptions
description: 'New York only. Register ADOPTION NOTICES that post-date the print volume this section''s text was taken from. They are NOTICES from the NY State Register, NOT an updated consolidated text: `text` and `body` are unchanged and still reflect `currentThrough` / `currencyNote`. Read each entry as "the State Register announced an adoption naming this section, or the Part that contains it, after the text we serve was current", and look the notice up in the State Register by its `idNo`.
Each entry: `idNo` (the Register I.D. No., e.g. `DFS-23-26-00013-A`), `scope` (`section` when the notice names this section, `part` when it names the Part containing it and says nothing about this section alone), `effectiveDate` (ISO date the adoption takes effect, null if the notice states none), `agency`, `issueDate` (ISO date of the Register issue). We do not return a link to the notice: the Register is hosted on a commercial platform and, as with `sourceUrl` on these regulations, the link is withheld under licence. Only adoptions (`-A`, and `-AA` amended notices of adoption) are listed, never proposals, emergency rules or withdrawals.
Null on every section with no such notice, which is NOT a statement that the section is current: we cover Register adoptions for NYCRR Titles 3, 19 and 23 only.'
examples:
- - agency: Department of Financial Services
effectiveDate: '2026-09-23'
idNo: DFS-23-26-00013-A
issueDate: '2026-09-23'
scope: part
adoptedAfterCurrentThrough:
anyOf:
- type: boolean
- type: 'null'
title: Adoptedaftercurrentthrough
description: New York only. True when `pendingAdoptions` is non-empty, i.e. the State Register records at least one adoption naming this section or its Part that post-dates the volume `currentThrough` refers to, so the text served may be out of date. Null (never false) when no such adoption is recorded; null is not a claim that the text is current.
examples:
- true
amendmentHistory:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Amendmenthistory
description: Structured amendment entries where the publisher records them separately from the credit line in `history`.
sourceNote:
anyOf:
- type: string
- type: 'null'
title: Sourcenote
description: The publisher's source note for the section, verbatim.
effectiveDate:
anyOf:
- type: string
- type: 'null'
title: Effectivedate
description: When THIS version took effect, as `YYYY-MM-DD`, or null when the publisher's own string does not name one unambiguous day we can read without guessing. On a section with `actStatus=superseded` this is the start of that version's window. The publisher's wording is preserved in `effectiveDateRaw` whenever it differs.
examples:
- '2002-11-25'
effectiveDateRaw:
anyOf:
- type: string
- type: 'null'
title: Effectivedateraw
description: The date exactly as the publisher writes it, present only when it differs from `effectiveDate`. A section whose publisher already prints ISO leaves this null. Expect prose (`September 8, 1916`), abbreviated months (`Feb. 25, 1868`), US numerics (`9/28/15`), Spanish for Puerto Rico (`26 de junio de 1963`), and values that are not a single date at all (`April 1, 2023 to June 30, 2026`), which is why they cannot be published under `effectiveDate`.
examples:
- September 8, 1916
historyEffectiveDate:
anyOf:
- type: string
- type: 'null'
title: Historyeffectivedate
description: 'When this version took effect, as `YYYY-MM-DD`, read out of the publisher''s own amendment credit line in `history`.
**This is a weaker fact than `effectiveDate` and is deliberately not published as one.** `effectiveDate` is a date the publisher put in a date field; this is our reading of the publisher''s prose. It is populated ONLY where `effectiveDate` is null, so the two can never be confused, and `history` is returned beside it as the evidence.
It exists because most states publish the commencement date nowhere else: measured over the live corpus on 2026-09-20, `effectiveDate` is set on 4.8% of state statutes and this answers a further 21.3%. It is the newest commencement the credit line names, and null whenever that cannot be stated without guessing: a credit line that dates only some of its entries, a date that belongs to a repeal, a sunset, an applicability rule or another section, a commencement still in the future, a date older than the section''s own `lastAmendedYear`, or a state whose `history` format we have not measured. Statutes only; never set on a regulation, a court rule or a federal corpus.'
examples:
- '2009-06-19'
priorEffectiveDates:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Prioreffectivedates
description: Earlier effective dates recorded for the section.
history:
anyOf:
- type: string
- type: 'null'
title: History
description: The publisher's own amendment/history credit line, verbatim, e.g. `Effective 5/4/2005; Superseded 8/1/2016`. `amendmentYears` is parsed from this; keep both when you need the exact wording.
supersededBy:
anyOf:
- type: string
- type: 'null'
title: Supersededby
description: '`actId` of the section that replaced this one. Present on a superseded version so you can fetch the current text in one hop via `GET /statutes/section/{actId}`.'
supersedes:
anyOf:
- type: string
- type: 'null'
title: Supersedes
description: '`actId` of the earlier version this section replaced, when known.'
ruleSet:
anyOf:
- type: string
- type: 'null'
title: Ruleset
description: For court rules, the rule family this belongs to, e.g. `North Dakota Rules of Civil Procedure`. Rule numbers repeat across families (a Civil Rule 12 and a Criminal Rule 12 both exist), so this is what disambiguates them.
publicLaws:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Publiclaws
description: Public Laws referenced by the section, e.g. `['Pub. L. 96-170']`.
federalRegisterCitations:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Federalregistercitations
description: 'Federal Register citations associated with the section, e.g. `[''48 FR 3956'', ''49 FR 15073'']`. This is the CFR''s form of the credit line `sourceCredit` carries for the USC: the rulemakings that established and amended the section. Populated on 37.4% of CFR sections, empty where eCFR prints no source note.'
granuleId:
anyOf:
- type: string
- type: 'null'
title: Granuleid
description: govinfo granule identifier (USC/CFR provenance).
packageId:
anyOf:
- type: string
- type: 'null'
title: Packageid
description: govinfo package identifier (USC/CFR provenance).
htmlUrl:
anyOf:
- type: string
- type: 'null'
title: Htmlurl
description: HTML version of the statute section.
pdfUrl:
anyOf:
- type: string
- type: 'null'
title: Pdfurl
description: PDF version of the statute section.
xmlUrl:
anyOf:
- type: string
- type: 'null'
title: Xmlurl
description: XML version of the statute section.
textUrl:
anyOf:
- type: string
- type: 'null'
title: Texturl
description: Plain-text version. Populated for state corpora (MS, NJ, NY, NV, etc.).
docxUrl:
anyOf:
- type: string
- type: 'null'
title: Docxurl
description: Microsoft Word (DOCX) version, when available.
stateHtmlUrl:
anyOf:
- type: string
- type: 'null'
title: Statehtmlurl
description: 'HTML rendering of the document. For most state corpora this is the publisher''s own page; for corpora we mirror (state agency guidance, regulations, court rules) it is our archived copy of the artifact the publisher served, on statutes-us.vaquill.ai. Use `externalUrl` for the publisher''s canonical address. Never a PDF: a mirrored PDF is served as `pdfUrl` instead. Populated for state corpora only.'
govInfoHtmlUrl:
anyOf:
- type: string
- type: 'null'
title: Govinfohtmlurl
description: Official govinfo.gov HTML version.
govInfoPdfUrl:
anyOf:
- type: string
- type: 'null'
title: Govinfopdfurl
description: Official govinfo.gov PDF version.
abstract:
anyOf:
- type: string
- type: 'null'
title: Abstract
description: The issuing agency's own summary of the document, as published in the Federal Register. Populated on 99.9% of rules and proposed rules, so a document can be triaged without fetching the full text.
examples:
- This regulation extends time-limited tolerances for pesticides.
agencies:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Agencies
description: Issuing agencies, by name. Populated on 99.9% of Federal Register documents. Pair with `agencySlugs` when you need the token the `agency` search filter takes.
examples:
- - Environmental Protection Agency
agencySlugs:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Agencyslugs
description: The issuing agencies as slugs. These are exactly the values the `agency` filter on `/us/statutes/search` accepts, so an agency facet can be round-tripped straight back into a query.
examples:
- - environmental-protection-agency
topics:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Topics
description: 'The Federal Register''s own CFR-index subject terms. Populated on ~71% of rules and ~68% of proposed rules, with one hard boundary: documents published before 2000 carry none, because the Federal Register did not index them this way.'
examples:
- - Environmental protection
- Pesticides and pests
documentTypeLabel:
anyOf:
- type: string
- type: 'null'
title: Documenttypelabel
description: 'The instrument type as the publisher names it: `Rule`, `Proposed Rule`, `Presidential Document`, `Declaratory Ruling`, `Resolution Agreement`. Deliberately NOT `corpusType`, which says which body of law a document belongs to: two documents in one corpus can be very different instruments.'
examples:
- Rule
documentSubtype:
anyOf:
- type: string
- type: 'null'
title: Documentsubtype
description: Finer instrument class where the publisher gives one. On presidential documents this separates an executive order from a proclamation, a memorandum or a notice (~90% populated there).
examples:
- Proclamation
action:
anyOf:
- type: string
- type: 'null'
title: Action
description: 'The Federal Register''s own ACTION line, ~100% populated. Carries distinctions no other field makes: interim final rule, direct final rule, withdrawal, reopening of the comment period.'
examples:
- Final rule.
president:
anyOf:
- type: string
- type: 'null'
title: President
description: The president in office for this document, on Federal Register and presidential-document corpora spanning 1994 to present.
examples:
- George W. Bush
signingDate:
anyOf:
- type: string
- type: 'null'
title: Signingdate
description: When a presidential document was signed, as `YYYY-MM-DD`, which is routinely earlier than `publicationDate` and is the legally operative date. See `signingDateRaw`.
examples:
- '2026-04-02'
signingDateRaw:
anyOf:
- type: string
- type: 'null'
title: Signingdateraw
description: The signing date as the publisher writes it, present only when it differs from `signingDate`.
datesText:
anyOf:
- type: string
- type: 'null'
title: Datestext
description: 'The verbatim DATES block from the Federal Register, ~98% populated. Worth reading alongside `frEffectiveOn`: a rule with staged or conditional effective dates has them here, and the single date flattens that away.'
examples:
- This regulation is effective December 14, 2001.
frVolume:
anyOf:
- type: integer
- type: 'null'
title: Frvolume
description: Federal Register volume, the `66` in `66 FR 64768`.
examples:
- 66
frStartPage:
anyOf:
- type: integer
- type: 'null'
title: Frstartpage
description: First Federal Register page, the `64768` in `66 FR 64768`.
examples:
- 64768
frEndPage:
anyOf:
- type: integer
- type: 'null'
title: Frendpage
description: Last Federal Register page. With `frStartPage` this gives the page RANGE, which `citation` cannot express because it carries only the first page.
examples:
- 64775
wordCount:
anyOf:
- type: integer
- type: 'null'
title: Wordcount
description: Words in the full document, so a caller can size a fetch before paying for the body.
examples:
- 6271
issuingAgency:
anyOf:
- type: string
- type: 'null'
title: Issuingagency
description: 'The body that promulgated or issued this document: the state agency behind a regulation, the division behind an agency letter.
Populated at 83.6-100% across the state-regulation corpora that carry it.'
examples:
- Pollution Control Board
adoptingCitations:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Adoptingcitations
description: 'Citations to the instrument that ADOPTED this rule: the state register notice, the Washington filing number, the adopting order. The rulemaking audit trail.
Unified across four different payload spellings, so this is comparable across states in a way the underlying data is not.
These are also the independent way to confirm a section when the publisher''s own page cannot be read without a browser (see `externalUrl`): a Texas rule''s `[''50 TexReg 8285'']` names the Texas Register issue and page that printed its adoption.'
examples:
- - 37 Ill. Reg. 16539
lawImplemented:
anyOf:
- type: string
- type: 'null'
title: Lawimplemented
description: The statute this rule IMPLEMENTS, as distinct from `statutoryAuthority`, which is the statute granting the rulemaking power. Florida populates both and they differ.
examples:
- Section 4656.1, Public Resources Code
lastAmendedDate:
anyOf:
- type: string
- type: 'null'
title: Lastamendeddate
description: 'Full date of the most recent amendment, as `YYYY-MM-DD`, where the publisher gives one. See `lastAmendedDateRaw` for the wording. Illinois and Colorado regulations carry their amendment provenance only here and in `amendmentNote`: neither state has a `history`, and Colorado has no `effectiveDate` either, so for Colorado this is the only date that exists.'
examples:
- '2013-10-04'
lastAmendedDateRaw:
anyOf:
- type: string
- type: 'null'
title: Lastamendeddateraw
description: The last-amended date as the publisher writes it, present only when it differs from `lastAmendedDate`, or null when it is not a date at all.
amendmentNote:
anyOf:
- type: string
- type: 'null'
title: Amendmentnote
description: The publisher's amendment credit line where it is stored separately from `history`. Illinois and Colorado regulations, ~72% populated.
examples:
- Amended at 37 Ill. Reg. 16539, effective October 4, 2013
currencyYear:
anyOf:
- type: integer
- type: 'null'
title: Currencyyear
description: Machine-readable counterpart to `currencyNote`, which is prose. 100% populated on the nine state-regulation corpora that carry a currency statement.
examples:
- 2025
reviewDate:
anyOf:
- type: string
- type: 'null'
title: Reviewdate
description: 'The date a rule must be re-adopted or it expires, where the state runs a sunset review. Ohio regulations, ~80% populated. Not an amendment date: it is in the future.'
examples:
- 11/1/2028
reviewDateRaw:
anyOf:
- type: string
- type: 'null'
title: Reviewdateraw
description: The review date as the publisher writes it, present only when it differs from `reviewDate`, or null when it is not a date at all.
originalEnactmentDate:
anyOf:
- type: string
- type: 'null'
title: Originalenactmentdate
description: 'When the section was FIRST enacted, as `YYYY-MM-DD`, ~72% populated on the US Code. Deliberately separate from `effectiveDate`: merging them would report an amended section as effective from its original year. On 35.7% of US Code points this is the only enactment date we hold. See `originalEnactmentDateRaw` for the publisher''s wording.'
examples:
- '1934-06-27'
originalEnactmentDateRaw:
anyOf:
- type: string
- type: 'null'
title: Originalenactmentdateraw
description: The enactment date as the publisher writes it, present only when it differs from `originalEnactmentDate`. The US Code prints `Aug. 14, 1935` where GovInfo statute compilations print `1935-08-14` for the same fact.
examples:
- June 27, 1934
releaseDate:
anyOf:
- type: string
- type: 'null'
title: Releasedate
description: When the document was released publicly, where that differs from when it was issued. NLRB advice memoranda are written years before release; measured, the two dates are never equal.
examples:
- '2018-06-14'
releaseDateRaw:
anyOf:
- type: string
- type: 'null'
title: Releasedateraw
description: The release date as the publisher writes it, present only when it differs from `releaseDate`, or null when it is not a date at all.
documentNumber:
anyOf:
- type: string
- type: 'null'
title: Documentnumber
description: 'The issuer''s own document or case number, for exact lookup: an FCC DA number, an NLRB case-handling docket, a ruling number. On NLRB advice memoranda and FCC/HHS OCR documents this is NOT recoverable from `sectionNumber`.'
examples:
- 21-CA-211066
caseName:
anyOf:
- type: string
- type: 'null'
title: Casename
description: The charged party or covered entity a document concerns. Only 27% equal to `sectionTitle` on HHS OCR, so it is not recoverable from the served text.
examples:
- Dunn-Edwards Corp.
forum:
anyOf:
- type: string
- type: 'null'
title: Forum
description: For `corpusType=AGENCY_ADJUDICATION`, the KIND of proceeding that produced the document, in the publisher's own words. On CFPB enforcement actions this is `Administrative Proceeding` (the Bureau's own Office of Administrative Adjudication, under 12 C.F.R. Part 1081) or `Civil Action` (a suit the Bureau filed in a federal district court). One action can carry both, in which case they are joined with `; `. Null on every other corpus.
examples:
- Administrative Proceeding
court:
anyOf:
- type: string
- type: 'null'
title: Court
description: 'The body that heard the matter, where the publisher names one. Distinct from `forum`, which is the KIND of proceeding: `forum` has two values and is what you filter on, `court` has as many values as there are districts and is for display. Populated on every CFPB civil action and on the administrative proceedings the Bureau labels with its own adjudication office.'
examples:
- U.S. District Court for the District of Massachusetts
relatedDocuments:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Relateddocuments
description: 'The publisher''s own labels for the filings whose text this record carries, in the order the publisher lists them. A CFPB enforcement action is ONE legal event published as two to seventeen PDFs and the unit we serve is the ACTION, not the filing: a consent order and the stipulation consenting to it are one record, because splitting them makes every search return two half-answers. This is what tells you which filings are inside the record you are holding. Only the operative instrument is mirrored under `pdfUrl`.'
examples:
- - Consent Order
- Stipulation
settlementAmount:
anyOf:
- type: string
- type: 'null'
title: Settlementamount
description: The monetary penalty or settlement, as the agency prints it. 95.2% populated on HHS OCR resolution agreements, where it is the single most-asked fact of the corpus.
examples:
- $16,500
requesters:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Requesters
description: Who asked for the determination or relief. On export-control commodity-jurisdiction determinations this is the applicant (100% populated); on no-action letters it determines who may rely on the relief.
examples:
- - Preece, Inc.
program:
anyOf:
- type: string
- type: 'null'
title: Program
description: The benefit or regulatory program a document governs, e.g. Old-Age and Survivors Insurance. 100% populated on Social Security rulings, where it is the primary axis a practitioner filters on.
examples:
- Old-Age and Survivors Insurance
languageCode:
anyOf:
- type: string
- type: 'null'
title: Languagecode
description: ISO code of the language the document is written in, present where a corpus is not wholly English. 86% of Puerto Rico insurance bulletins are Spanish (`es`).
examples:
- es
volume:
anyOf:
- type: integer
- type: 'null'
title: Volume
description: Volume number for corpora organised in volumes, e.g. the USCIS Policy Manual, whose Volume is the top hierarchy level and had no served representation at all.
examples:
- 1
articleNumber:
anyOf:
- type: string
- type: 'null'
title: Articlenumber
description: Article number. Article is the PRIMARY hierarchy level in state constitutions, where `chapter` and `part` are 0-6% populated, so without this those corpora served almost no structure.
examples:
- '1'
articleName:
anyOf:
- type: string
- type: 'null'
title: Articlename
description: Article title, the companion to `articleNumber`.
examples:
- Declaration of Rights
ruleSetCode:
anyOf:
- type: string
- type: 'null'
title: Rulesetcode
description: Stable machine key for the rule family, where `ruleSet` gives only the prose name. 100% populated on the court-rules states that have a rule set.
examples:
- NDSUPCTADMINR
edition:
anyOf:
- type: string
- type: 'null'
title: Edition
description: The publisher's edition or year for this text.
examples:
- '2025'
relatedCitations:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Relatedcitations
description: 'Citations OUT of this document that are neither USC nor CFR: the state statutes a regulation implements, the Internal Revenue Code sections a ruling construes, other guidance it points at.
`crossReferencesUsc` and `crossReferencesCfr` are 0% on several of these corpora, so this is the only outbound citation set they have.'
examples:
- - RCW 28A.150.290
supersessionActions:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Supersessionactions
description: 'What this document does to EARLIER documents, keyed by the issuer''s own verb: `modifies`, `obsoletes`, `amplifies`, `clarifies`, `rescinds`, each mapping to the documents affected.
`supersedes` and `supersededBy` cover only the strongest verb. Without these a caller cannot tell a modified revenue procedure from an untouched one, nor see which memorandum rescinded which.'
examples:
- modifies:
- Rev. Proc. 2011-47
licenseNote:
anyOf:
- type: string
- type: 'null'
title: Licensenote
description: Licence and upstream dataset for text derived from a third-party snapshot rather than fetched from the publisher. Present on the state-regulation corpora built from an external dataset; absent means we hold the text under no third-party licence.
examples:
- MIT (reglab/statecodes)
subtitle:
anyOf:
- type: string
- type: 'null'
title: Subtitle
description: 'Subtitle, where a jurisdiction puts a level between title and chapter. Maryland''s regulations are organised Title > Subtitle > Chapter and are 100% populated; no other served field expressed that level.
Deliberately NOT the same as `subchapter`, which sits BELOW chapter.'
examples:
- '11'
subtitleName:
anyOf:
- type: string
- type: 'null'
title: Subtitlename
description: Subtitle title, the companion to `subtitle`.
examples:
- AIR QUALITY
publisherKey:
anyOf:
- type: string
- type: 'null'
title: Publisherkey
description: 'The publisher''s own stable identifier for this document, where it issues one. On the US Code this is the OLRC''s `usckey` (100% populated), which joins directly to the uscode.house.gov bulk XML; on Colorado regulations it is the state''s rule id.
Use it to reconcile our records against the publisher''s without matching on citation strings.'
examples:
- '430000000310400000000000000000000'
versionId:
anyOf:
- type: string
- type: 'null'
title: Versionid
description: The publisher's identifier for THIS VERSION of the document, where it versions them separately from the document itself. 100% populated on Colorado regulations, where it is the only version pointer that exists.
examples:
- '11948'
referencedShortTitles:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Referencedshorttitles
description: Popular names of acts this section REFERENCES, ~10% of the US Code. Distinct from `popularName`, which is the section's own.
examples:
- - Driftnet Modernization and Bycatch Reduction Act
subjectNumber:
anyOf:
- type: string
- type: 'null'
title: Subjectnumber
description: The publisher's numbered subject index entry, the companion to the term in `topics`. 100% populated on Social Security rulings.
examples:
- '47'
audience:
anyOf:
- type: string
- type: 'null'
title: Audience
description: Who the document is addressed to or binds, where the issuer states it. 100% populated on the Montana insurance bulletins.
examples:
- All Persons Engaged in Marketing
sourceCharStart:
anyOf:
- type: integer
- type: 'null'
title: Sourcecharstart
description: Character offset where this text begins in the source document, for callers reconciling our extraction against the original PDF. Pairs with `sourcePageStart`.
examples:
- 263194
sourceCharEnd:
anyOf:
- type: integer
- type: 'null'
title: Sourcecharend
description: Character offset where this text ends in the source document.
examples:
- 264198
alternateCitations:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Alternatecitations
description: 'Other official citation forms for THIS document, where a publisher prints more than one. Puerto Rico gives an L.P.R.A. cite, Arizona a long form, the IRS an Internal Revenue Bulletin cite, the Federal Reserve a paired Consumer Affairs number.
Distinct from `relatedCitations`, which is what this document points AT. Use these when you need to match a citation a user typed in the form their jurisdiction actually publishes.'
examples:
- - 4 L.P.R.A. § 2077
expirationDate:
anyOf:
- type: string
- type: 'null'
title: Expirationdate
description: 'When this rule lapses unless re-adopted, as `YYYY-MM-DD`. Distinct from `reviewDate` (the review deadline) and from any amendment date: it is in the future and it ENDS the rule. See `expirationDateRaw` for the publisher''s wording.'
examples:
- '2029-03-01'
expirationDateRaw:
anyOf:
- type: string
- type: 'null'
title: Expirationdateraw
description: The expiry date as the publisher writes it, present only when it differs from `expirationDate`. State regulators print this as `1/1/2028` and `03-01-2029` as well as ISO.
examples:
- 03-01-2029
committeeNote:
anyOf:
- type: string
- type: 'null'
title: Committeenote
description: 'Advisory-committee note on a procedural rule: the standard interpretive gloss courts read alongside the rule text. Deliberately separate from `amendmentNote`, which records when the rule changed rather than what it means.'
sourcePageStart:
anyOf:
- type: integer
- type: 'null'
title: Sourcepagestart
description: First page in the official PDF this text was extracted from, for a pinpoint print citation. 100% populated on the Federal Rules.
examples:
- 114
sourcePageEnd:
anyOf:
- type: integer
- type: 'null'
title: Sourcepageend
description: Last page in the official PDF; companion to `sourcePageStart`.
examples:
- 114
displayLabel:
anyOf:
- type: string
- type: 'null'
title: Displaylabel
description: 'The publisher''s own short label for this section, e.g. `Cal. BPC § 655.2` or `MPEP § 2165.03`. Populated on essentially every document we hold.
Usually equal to `citationShort`, but NOT always: on the Federal Communications Commission, NLRB, HHS OCR and BIS corpora the two differ on every document, and there `displayLabel` is the form the publisher itself prints.'
examples:
- MPEP § 2165.03
publicationDate:
anyOf:
- type: string
- type: 'null'
title: Publicationdate
description: 'The date this document was published by its source. For Federal Register documents this is the FR publication date, the primary citation and sort key, populated on 100% of rules and proposed rules.
Distinct from `effectiveDate` (when it takes legal effect) and from `issueDate` (when the issuing body dated it). A rule is routinely published before it is effective.'
examples:
- '2001-12-14'
publicationDateRaw:
anyOf:
- type: string
- type: 'null'
title: Publicationdateraw
description: The publication date as the publisher writes it, present only when it differs from `publicationDate`, or null when it is not a date at all.
publicLawCites:
anyOf:
- items:
additionalProperties: true
type: object
type: array
- type: 'null'
title: Publiclawcites
description: 'Structured Statutes at Large citations parsed out of the source credit, populated on ~72% of the US Code. Each entry carries `statVolume`, `statPage`, `type` and a `display` string.
`publicLaws` gives the bare `Pub. L.` list and `sourceCredit` the raw prose; this is the same information already parsed, so a caller can link to the Statutes at Large without re-parsing the credit line.'
topLevelTitle:
anyOf:
- type: string
- type: 'null'
title: Topleveltitle
description: 'The outermost division this document sits under, where the corpus has one that `titleNumber`/`chapter`/`part` do not already express. Examples: `Title 9: Criminal` for the DOJ Justice Manual, `Volume 1 - General Policies and Procedures` for the USCIS Policy Manual.
Null for flat corpora, where one document is the whole unit.'
examples:
- 'Title 9: Criminal'
externalUrl:
anyOf:
- type: string
- type: 'null'
title: Externalurl
description: 'The publisher''s own page for this section, exactly as recorded at ingest: uscode.house.gov, ecfr.gov, a state legislature or a state register. Null when the publisher issues no per-section link, or when the link is withheld under licence (`licenseNote` says so). Prefer `sourceUrl`, which is this link when present and otherwise the best official alternative.
Some official publishers serve their code only through a JavaScript application, so the link renders in a browser but returns an empty page shell to a plain HTTP client. Texas is the main case: the Secretary of State publishes the Texas Administrative Code only on its Appian portal (texas-sos.appianportalsgov.com). The link is still the correct citation. To check a section without a browser, use `adoptingCitations` (for Texas, the `NN TexReg PPPP` register citations that adopted and amended it) and read the text we captured at `textUrl`.'
examples:
- https://www.mass.gov/regulations/240-CMR-200-licensure-of-cosmetologists
sourceUrl:
anyOf:
- type: string
- type: 'null'
title: Sourceurl
description: 'Where the government published this text: the link to cite and to verify against. The same value `/us/statutes/section/{actId}/body` returns as `sourceUrl`, on every search result, section record and batch item.
It is `externalUrl` when the publisher issued a per-section link, and otherwise falls back to the govinfo.gov page, then the state''s own page, then our archived copy of the publisher''s page. Null when we hold no publishable link: a third-party compiler is never served here, and where a link exists but is withheld under licence, `licenseNote` says so.'
examples:
- https://www.mass.gov/regulations/240-CMR-200-licensure-of-cosmetologists
type: object
required:
- actId
title: StatuteResult
description: A single statute section from search results.
SectionEnactment:
properties:
sessionLawId:
type: string
title: Sessionlawid
description: The act, in the session-law registry. Read it at `href`.
examples:
- SSL_MS_2025R_G_C301
href:
type: string
title: Href
description: 'Path of the act on this API: `GET` it for the record, or its `/body` for the text.'
examples:
- /api/v1/us/session-laws/SSL_MS_2025R_G_C301
citation:
anyOf:
- type: string
- type: 'null'
title: Citation
description: The act's citation as its publisher prints it. Null when none is held.
examples:
- Regular Session, ch. 301
title:
anyOf:
- type: string
- type: 'null'
title: Title
description: The act's title as printed. Null when none is held.
examples:
- AN ACT TO AUTHORIZE A PERSON WHO IS THE HOLDER OF A WINE MANUFACTURER'S PERMIT
sessionCode:
anyOf:
- type: string
- type: 'null'
title: Sessioncode
description: The session the act was enacted in, as in `coverage.sessionsHeld`.
examples:
- 2025R
approvedDate:
anyOf:
- type: string
format: date
- type: 'null'
title: Approveddate
description: 'Date the governor approved the act, ISO 8601: never an effective date. Null when none is held.'
examples:
- '2025-03-17'
effectiveDates:
items:
$ref: '#/components/schemas/SessionLawDate'
type: array
title: Effectivedates
description: 'Every effective date the publisher prints for the ACT, in printed order: the act''s, not necessarily this section''s (an act can take effect in parts, and a date may carry a `scopeAsPrinted`). Empty when none is held, which does not mean the act is not in force.'
action:
type: string
enum:
- added
- amended
- repealed
- renumbered
- other
title: Action
description: 'What the act did to the section, normalised: `added`, `amended`, `repealed`, `renumbered`, or `other`. It is mapped from `actionAsPrinted` only where the publisher''s legend is settled; `other` means the table prints no action (Nebraska, `actionAsPrinted` is null), prints one that is not a change to this section (Mississippi''s `BF`, brought forward), or one we do not map. Never read `other` as ''unchanged''. The publisher''s own code is always in `actionAsPrinted`.'
examples:
- amended
actionAsPrinted:
anyOf:
- type: string
- type: 'null'
title: Actionasprinted
description: The publisher's own action code or word for this entry, verbatim. Null when the table prints none.
examples:
- A
sectionAsPrinted:
type: string
title: Sectionasprinted
description: The section exactly as the publisher's table prints it.
examples:
- 027-0071-0005
codeAsPrinted:
anyOf:
- type: string
- type: 'null'
title: Codeasprinted
description: The code the publisher qualifies the section with, as printed (`HRS`, `D.C. Code`, `Education Code`). Null where the publisher prints none.
examples:
- RCW
actSectionAsPrinted:
anyOf:
- type: string
- type: 'null'
title: Actsectionasprinted
description: Which section of the ACT does it, as printed (Washington's `1223`, Kentucky's `5`). Null where the table prints none.
examples:
- '6'
basis:
type: string
const: publisher_sections_affected
title: Basis
description: 'Where the entry comes from: always `publisher_sections_affected`, the publisher''s own table of the code sections an act affects. Never read out of the act''s prose.'
default: publisher_sections_affected
examples:
- publisher_sections_affected
matchQuality:
type: string
const: as_printed
title: Matchquality
description: 'How the entry was matched to the section: always `as_printed`, the publisher''s printed section equals this section''s number after folding case, spacing, dashes and the section sign, and nothing is matched by prefix. The match is on the number, in the jurisdiction''s own printed form; it is not a legal analysis of what the act did.'
default: as_printed
examples:
- as_printed
identityConfidence:
type: string
enum:
- confirmed
- single_source
- inferred
- disputed
title: Identityconfidence
description: 'How firmly the registry knows the act is the law it says it is: `confirmed`, `single_source`, `inferred` or `disputed`.'
examples:
- single_source
textStatus:
type: string
enum:
- held
- withheld
- not_held
- pending
title: Textstatus
description: 'Whether we serve the act''s text: `held`, `withheld`, `not_held` or `pending`, as on `GET /us/session-laws/{sessionLawId}`.'
examples:
- held
enactmentOutcome:
anyOf:
- type: string
enum:
- signed
- became_law_without_signature
- veto_overridden
- line_item_veto
- vetoed
- pocket_veto
- not_presented
- approved_by_voters
- unknown
- type: 'null'
title: Enactmentoutcome
description: 'How the act became (or did not become) law, as on the act''s record: `signed`, `vetoed` and so on. Null when it is not recorded.'
examples:
- signed
type: object
required:
- sessionLawId
- href
- action
- sectionAsPrinted
- identityConfidence
- textStatus
title: SectionEnactment
description: 'One printed entry of a publisher''s table: this act, against this section.'
UsJurisdictionCoverage:
properties:
code:
type: string
title: Code
description: 2-letter state ISO code (lowercase) or `federal` for USC/CFR.
examples:
- tx
name:
type: string
title: Name
description: Display name.
examples:
- Texas
kind:
type: string
enum:
- federal
- state
- territory
title: Kind
description: '`federal` for USC/CFR, `state` for the 50 states, `territory` for non-state jurisdictions (DC, Puerto Rico).'
sectionCount:
type: integer
minimum: 0.0
title: Sectioncount
description: 'Distinct sections held for this jurisdiction, summed across its `corpora`. 0 means not yet covered.
One per provision or document, NOT per retrieval passage (see `totalPassages` for those). Repealed, transferred and reserved sections ARE counted: a legal research corpus serves them and a customer researching a historical question needs them. A SUPERSEDED prior version is not counted a second time when the section it supersedes is also served, because that is the same section twice -- but one with no current counterpart IS counted, since it is the only text we hold for that provision. Read `statusBreakdown` to see the split.'
hasData:
type: boolean
title: Hasdata
description: True when section_count > 0.
statusBreakdown:
additionalProperties:
additionalProperties:
type: integer
type: object
type: object
title: Statusbreakdown
description: 'Per-corpusType `act_status` split over the same sections `corpora` counts, e.g. `{"REGULATION": {"inForce": 12151, "repealed": 10640, "transferred": 5426}}`.
Published so a large section count can be read as maintained law plus retained history rather than as an undifferentiated total: Montana holds 28,217 regulation sections of which 12,151 are in force, and without this split that reads either as 28,217 current rules or as a coverage problem, and it is neither.
⚠️ `inForce` is what the ingester recorded, and it is NOT a complete census of current law: a zero means the status was never determined, never that the corpus is entirely inoperative. Absent when a jurisdiction has not been measured exactly.'
corpora:
additionalProperties:
type: integer
type: object
title: Corpora
description: 'Per-corpusType ingested-DOCUMENT counts for this jurisdiction, keyed by the `corpusType` token (e.g. `{"STATE": 176778, "REGULATION": 51142}`). Only corpora with data are included. Pass a key as `corpusType` to `/us/statutes/search` to scope a query.'
sessionLaws:
anyOf:
- $ref: '#/components/schemas/SessionLawJurisdictionCoverage'
- type: 'null'
description: 'State session laws (acts as enacted) held for this jurisdiction, by legislative session, with each session''s coverage status (`complete` or `partial`), how many laws we serve, withhold or know without text, the expected total (`denominator`), `openGaps` and when it was `measuredAt`. Beside the sessions it carries the `series` and `instrumentTypes` that exist (the values `GET /us/session-laws/list` accepts) and the span of approval dates held (`earliestApprovedDate`, `latestApprovedDate`); each of those four is omitted when it cannot be read. A separate corpus: read and list the laws with `/us/session-laws`, not `/us/statutes/search`, and resolve their citations with `/us/statutes/resolve`. The whole block is absent when we hold no session laws for the jurisdiction (for example IN and TN at launch, whose publishers we cannot yet collect from), and whenever session-law coverage cannot be read; absence is a gap in our collection, not a statement that the jurisdiction enacts none.'
type: object
required:
- code
- name
- kind
- sectionCount
- hasData
title: UsJurisdictionCoverage
description: One row of the /us/statutes/states response.
StatuteSectionResponse:
properties:
section:
$ref: '#/components/schemas/StatuteResult'
description: 'The section''s metadata and source links. Full text is a separate call: `/us/statutes/section/{actId}/body`.'
resolvedFrom:
anyOf:
- $ref: '#/components/schemas/SectionIdentifierResolution'
- type: 'null'
description: 'Null when the section is exactly the act_id you sent. Otherwise how your input was matched: a citation, or an act_id with transport damage (whitespace, quotes, a trailing period) removed.'
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 240.5
creditsConsumed:
type: number
title: Creditsconsumed
description: '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.'
default: 0.0
examples:
- 4
type: object
required:
- section
title: StatuteSectionResponse
description: Detailed section metadata (no full text, use /body for that).
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
StatuteCrossStateResponse:
properties:
section:
$ref: '#/components/schemas/StatuteResult'
description: The section you asked about.
neighbors:
items:
$ref: '#/components/schemas/StatuteCrossStateNeighbor'
type: array
title: Neighbors
description: Comparable provisions in other states, most similar first. At most one entry per state, so this reads as a jurisdiction comparison rather than a relevance list.
statesCovered:
type: integer
title: Statescovered
description: How many distinct states are represented. Fewer than you asked for means no provision in the remaining states cleared the similarity floor, not that those states are missing from the corpus.
default: 0
examples:
- 5
note:
anyOf:
- type: string
- type: 'null'
title: Note
description: Set only when the answer is not a real zero. Cross-state comparison is defined for state statute sections; for USC, CFR and other corpora this explains that the section has no state analogues and the call is refunded.
rankingDegraded:
type: boolean
title: Rankingdegraded
description: True when the relevance model was unavailable, so the neighbors are in retrieval order and `similarity` is a retrieval score on a much smaller scale rather than the usual 0-1. The provisions are still the retrieved analogues; retry shortly for the fully ranked answer.
default: false
examples:
- false
resolvedFrom:
anyOf:
- $ref: '#/components/schemas/SectionIdentifierResolution'
- type: 'null'
description: 'Null when the section is exactly the act_id you sent. Otherwise how your input was matched: a citation, or an act_id with transport damage (whitespace, quotes, a trailing period) removed.'
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 420.1
creditsConsumed:
type: number
title: Creditsconsumed
description: 'Credits actually charged for this call. Read it rather than assuming the list price: failed and refunded work bills 0.'
default: 0.0
examples:
- 6
type: object
required:
- section
title: StatuteCrossStateResponse
description: Response for `GET /us/statutes/section/{act_id}/cross-state`.
SubsectionNode:
properties:
label:
type: string
title: Label
description: The marker as printed, e.g. `(b)` or `(2)`.
pincite:
type: string
title: Pincite
description: 'Full path to this subsection from the top of the section, e.g. `(b)(2)`. Append it to the section''s citation to point at this exact passage: 42 U.S.C. § 1983(b)(2). Lawyers call that a pincite, a citation to the precise place rather than the whole section.'
examples:
- (b)(2)
type:
type: string
title: Type
description: 'The drafting level of this node: `subsection`, `paragraph`, `subparagraph`, `clause`, or `subclause`. Use it to render the marker style (letters, numbers, roman).'
default: subsection
citation:
anyOf:
- type: string
- type: 'null'
title: Citation
description: Full pinpoint citation when the section citation is known, e.g. `42 U.S.C. § 1983(b)(2)`.
text:
type: string
title: Text
description: This node's own text, excluding nested children.
default: ''
children:
items:
$ref: '#/components/schemas/SubsectionNode'
type: array
title: Children
description: Nested subsections one level deeper.
type: object
required:
- label
- pincite
title: SubsectionNode
description: One node in a section's subsection tree (see `/body?structured=true`).
SectionEnactmentsResponse:
properties:
actId:
type: string
title: Actid
description: The section's act_id as served, after any citation or copy damage was resolved.
examples:
- STATE_MS_T27_C71_S27-71-5
resolvedFrom:
anyOf:
- $ref: '#/components/schemas/SectionIdentifierResolution'
- type: 'null'
description: 'Present only when your input was a citation or an id carrying copy damage: what it was matched as. Null when you sent an exact act_id.'
jurisdiction:
anyOf:
- type: string
- type: 'null'
title: Jurisdiction
description: Lowercase two-letter code of the section's jurisdiction. Null for a federal section.
examples:
- ms
supported:
type: boolean
title: Supported
description: 'True when this section''s jurisdiction is one whose publisher table is mapped to the statutes section numbers and this section is in the form that mapping was proven on: then `enactments` is an answer, even when it is empty, and the call is charged. False when it is not (see `reason`): `enactments` is empty, says nothing about the section, and the call is NOT charged.'
examples:
- true
reason:
anyOf:
- type: string
enum:
- unsupported_jurisdiction
- not_a_state_code_section
- section_not_in_proven_form
- type: 'null'
title: Reason
description: 'Why `supported` is false. `unsupported_jurisdiction`: we do not read this jurisdiction''s table (none is printed, or its form is not verified against our section numbers), see `coverage.note`. `not_a_state_code_section`: the section is not a state statute (a federal, regulation or constitution section). `section_not_in_proven_form`: the jurisdiction is read, but this section''s stored number is not in a form the mapping was proven on, so it is not guessed at. Null when `supported` is true.'
examples:
- null
enactments:
items:
$ref: '#/components/schemas/SectionEnactment'
type: array
title: Enactments
description: 'The entries of the publisher''s tables whose printed section is this section, newest act first (by approval date, undated last), one per printed entry: an act that lists the section twice appears twice. NEVER a complete history: only acts we hold, in sessions we hold, whose table lists the section in the printed form this jurisdiction''s mapping reads. Empty with `supported: true` is a real answer: no held table lists it.'
count:
type: integer
title: Count
description: Entries returned in `enactments`.
default: 0
examples:
- 1
truncated:
type: boolean
title: Truncated
description: True when more entries matched than are returned (the newest are kept). A section amended by that many acts is not a case we have met.
default: false
examples:
- false
coverage:
$ref: '#/components/schemas/EnactmentCoverage'
description: What this answer is read from, and what it is not. Show it with the list.
creditsConsumed:
type: integer
title: Creditsconsumed
description: Credits actually charged for this call, never the list price. 0 when `supported` is false (refunded) and on a failure. A citation sent in place of the act_id adds the `/us/statutes/resolve` price, charged whether or not it resolves.
default: 0
examples:
- 1
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Not billed on.
default: 0.0
examples:
- 96.4
type: object
required:
- actId
- supported
- coverage
title: SectionEnactmentsResponse
description: Response for `GET /us/statutes/section/{act_id}/enactments`.
UsStatutesCoverageResponse:
properties:
corpusTypes:
items:
$ref: '#/components/schemas/UsCorpusTypeInfo'
type: array
title: Corpustypes
description: Legend of every corpusType token, its meaning, and its scope.
jurisdictions:
items:
$ref: '#/components/schemas/UsJurisdictionCoverage'
type: array
title: Jurisdictions
description: One row per jurisdiction (federal first, then states and territories), each carrying its per-corpusType counts in `corpora`.
totalSections:
type: integer
title: Totalsections
description: Count of distinct sections (one per provision or document) across the corpus. This is the deduplicated legal-document total, not the raw index size; see `totalPassages`.
totalPassages:
type: integer
title: Totalpassages
description: Total indexed retrieval passages across the corpus. Longer sections and documents are split into several passages for retrieval, so this runs well above `totalSections`. The Federal Register (long agency rules) accounts for over half.
default: 0
stateCountWithData:
type: integer
title: Statecountwithdata
measuredAt:
anyOf:
- type: string
- type: 'null'
title: Measuredat
description: 'When these counts were last measured against the index, as the OLDEST per-jurisdiction measurement in this response. This is OUR measurement''s age, not the publisher''s currency: for what a section is current THROUGH, read `currentThrough` on the section, and for when a source was last checked, read `GET /boards`.\n\nIt exists because a jurisdiction whose measurement keeps failing is served from the last value we knew to be correct, which is the right trade (a stale count is accurate, a degraded one reports a real corpus as absent) and used to be indistinguishable from a fresh one. Null means nothing in this response has been successfully measured yet.'
type: object
required:
- corpusTypes
- jurisdictions
- totalSections
- stateCountWithData
title: UsStatutesCoverageResponse
description: 'Response for `GET /us/statutes/coverage`.
A self-describing matrix: a legend of every `corpusType` token plus, for
each jurisdiction, the per-corpusType ingested-document counts. Use it to learn
exactly what is queryable where before calling `/us/statutes/search`.'
EnactmentSession:
properties:
code:
type: string
title: Code
description: Session code, `{year}{type}{ordinal}`, as on `GET /us/session-laws/list`.
examples:
- 2025R
label:
anyOf:
- type: string
- type: 'null'
title: Label
description: The session's canonical label, as the publisher names it.
examples:
- 2025 Regular Session
status:
anyOf:
- type: string
enum:
- complete
- partial
- type: 'null'
title: Status
description: 'Whether we hold every act of the session (`complete`) or only part of it (`partial`): an act missing from a partial session is not evidence that it did not touch the section. Null when coverage could not be read just now.'
examples:
- complete
type: object
required:
- code
title: EnactmentSession
description: One legislative session of the jurisdiction whose code-section tables are read.
StatuteCitedByResponse:
properties:
section:
$ref: '#/components/schemas/StatuteResult'
description: The section you asked about.
citers:
items:
$ref: '#/components/schemas/StatuteResult'
type: array
title: Citers
description: 'Sections whose text cross-references this one, in statutory order. Empty is a real answer: plenty of sections are cited by nothing.'
total:
type: integer
title: Total
description: 'How many citing sections were returned. This is the size of `citers`, not a corpus-wide count: it is capped by `limit`.'
default: 0
examples:
- 17
truncated:
type: boolean
title: Truncated
description: True when more citing sections exist than `limit` allowed. Raise `limit` to see the rest.
default: false
note:
anyOf:
- type: string
- type: 'null'
title: Note
description: Set only when the answer is not a real zero. Reverse citation is built on the cross-reference index, which exists for USC and CFR; for any other corpus this explains that the section is out of scope and the call is refunded. When it is null, an empty `citers` means nothing cites this section.
resolvedFrom:
anyOf:
- $ref: '#/components/schemas/SectionIdentifierResolution'
- type: 'null'
description: 'Null when the section is exactly the act_id you sent. Otherwise how your input was matched: a citation, or an act_id with transport damage (whitespace, quotes, a trailing period) removed.'
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 74.2
creditsConsumed:
type: number
title: Creditsconsumed
description: 'Credits actually charged for this call. Read it rather than assuming the list price: failed and refunded work bills 0.'
default: 0.0
examples:
- 2
type: object
required:
- section
title: StatuteCitedByResponse
description: Response for `GET /us/statutes/section/{act_id}/cited-by`.
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
StatuteCrossStateNeighbor:
properties:
section:
$ref: '#/components/schemas/StatuteResult'
description: The out-of-state section.
state:
type: string
title: State
description: Two-letter code of the state this provision belongs to.
examples:
- ny
similarity:
type: number
title: Similarity
description: 'How closely this provision tracks the source section, 0 to 1. This is a retrieval score, not a legal opinion: a high score means the provisions read alike, never that they are legally equivalent.'
examples:
- 0.82
type: object
required:
- section
- state
- similarity
title: StatuteCrossStateNeighbor
description: One out-of-state provision that addresses the same subject.
SessionLawDenominator:
properties:
kind:
type: string
enum:
- stated_count
- complete_listing
- max_number
- feed_total
- our_recount
- registry_union
- none
title: Kind
description: 'Where the total comes from. `stated_count`: the publisher states how many measures the session enacted. `complete_listing`: the publisher''s own complete list of the session''s acts, which we counted. `max_number`: the highest chapter number the publisher printed. `feed_total`: the total a publisher feed reports. `our_recount`: we counted the publisher''s pages ourselves. `registry_union`: the measures we know of from several sources. `none`: no total is available, so completeness cannot be judged.'
examples:
- complete_listing
value:
anyOf:
- type: integer
minimum: 0.0
- type: 'null'
title: Value
description: The number of laws the session is expected to hold. Null when `kind` is `none`. Compare it with `registryCount` and `servedCount`.
examples:
- 296
derivation:
type: string
title: Derivation
description: 'One plain sentence saying what `value` counts and where it comes from. Written for customers: it never contains our internal audit or collection notes.'
examples:
- The publisher's complete listing of this session names 296 acts.
type: object
required:
- kind
- derivation
title: SessionLawDenominator
description: How many laws a session is supposed to hold, and where that number comes from.
StatuteDefinitionsResponse:
properties:
section:
$ref: '#/components/schemas/StatuteResult'
description: The section you asked about.
definitionsSection:
anyOf:
- $ref: '#/components/schemas/StatuteResult'
- type: 'null'
description: The sibling section the terms were parsed from. Null when the chapter has no definitions section, in which case `terms` is empty and the call is refunded.
terms:
items:
$ref: '#/components/schemas/StatuteDefinitionTerm'
type: array
title: Terms
description: Defined terms governing this section, in the order the source lists them.
total:
type: integer
title: Total
description: How many terms were parsed.
default: 0
examples:
- 12
note:
anyOf:
- type: string
- type: 'null'
title: Note
description: 'Set only when no terms could be returned, explaining which step came up empty: the chapter has no definitions section, or its text is not ingested yet. The call is refunded in both cases.'
resolvedFrom:
anyOf:
- $ref: '#/components/schemas/SectionIdentifierResolution'
- type: 'null'
description: 'Null when the section is exactly the act_id you sent. Otherwise how your input was matched: a citation, or an act_id with transport damage (whitespace, quotes, a trailing period) removed.'
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 310.8
creditsConsumed:
type: number
title: Creditsconsumed
description: 'Credits actually charged for this call. Read it rather than assuming the list price: failed and refunded work bills 0.'
default: 0.0
examples:
- 4
type: object
required:
- section
title: StatuteDefinitionsResponse
description: Response for `GET /us/statutes/section/{act_id}/definitions`.
SessionLawJurisdictionCoverage:
properties:
sessions:
items:
$ref: '#/components/schemas/SessionLawSessionCoverage'
type: array
title: Sessions
description: Oldest session first.
examples:
- - code: 2025R
collectedCount: 43
denominator:
derivation: The publisher's complete listing of this session names 296 measures. We hold 43 of them; the rest are not yet collected.
kind: complete_listing
value: 296
label: 153rd General Assembly
notHeldCount: 0
openGaps: 253
registryCount: 43
servedCount: 43
status: partial
type: regular
withheldCount: 0
year: 2025
sessionCount:
type: integer
minimum: 0.0
title: Sessioncount
description: Sessions of this jurisdiction we hold session laws for.
examples:
- 2
completeSessionCount:
type: integer
minimum: 0.0
title: Completesessioncount
description: How many of those sessions are `complete`.
examples:
- 2
servedCount:
type: integer
minimum: 0.0
title: Servedcount
description: Laws served across every session listed.
examples:
- 54
series:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Series
description: 'The numbering series that exist among this jurisdiction''s session laws: the values `series` accepts on `GET /us/session-laws/list`. `general` is the ordinary chapter sequence. Omitted when it cannot be read, which is not the same as no series existing.'
examples:
- - general
instrumentTypes:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Instrumenttypes
description: 'The kinds of measure we hold for this jurisdiction: the values `instrumentType` accepts on `GET /us/session-laws/list`. Omitted when it cannot be read.'
examples:
- - act
- joint_resolution
earliestApprovedDate:
anyOf:
- type: string
format: date
- type: 'null'
title: Earliestapproveddate
description: 'The earliest approval date among this jurisdiction''s session laws, ISO 8601: the start of what the approval-date filters on `GET /us/session-laws/list` can match. Omitted when no law prints an approval date or the span cannot be read.'
examples:
- '2025-02-10'
latestApprovedDate:
anyOf:
- type: string
format: date
- type: 'null'
title: Latestapproveddate
description: 'The latest approval date among this jurisdiction''s session laws, ISO 8601: the end of what the approval-date filters on `GET /us/session-laws/list` can match. Omitted when no law prints an approval date or the span cannot be read.'
examples:
- '2025-06-14'
type: object
required:
- sessionCount
- completeSessionCount
- servedCount
title: SessionLawJurisdictionCoverage
description: A jurisdiction's state session laws (acts as enacted), by session.
StatuteResolveBatchRequest:
properties:
citations:
items:
type: string
type: array
maxItems: 500
minItems: 1
title: Citations
description: 'Bluebook citation strings to resolve. Duplicates are collapsed FIRST and order is preserved, so the response''s `results` array lines up with the de-duplicated input.
The cap is **50 UNIQUE citations, applied after that collapse**, so a brief quoting one section sixty times is one citation and is accepted. 500 is the raw list ceiling, which exists so an unbounded list of duplicates cannot make us walk it.
Priced PER CITATION at the single-resolve rate, exactly like `POST /us/statutes/sections`: batching is a round-trip and latency win, not a discount. Thirty citations cost the same 60 credits either way and take one request instead of thirty.'
examples:
- - 42 U.S.C. 1983
- 16 C.F.R. 444.1
- Cal. Civ. Code 1950.5
state:
anyOf:
- type: string
enum:
- federal
- al
- ak
- az
- ar
- ca
- co
- ct
- de
- dc
- fl
- ga
- gu
- hi
- id
- il
- in
- ia
- ks
- ky
- la
- me
- md
- ma
- mi
- mn
- ms
- mo
- mt
- ne
- nv
- nh
- nj
- nm
- ny
- nc
- nd
- mp
- oh
- ok
- or
- pa
- pr
- ri
- sc
- sd
- tn
- tx
- ut
- vt
- va
- wa
- wv
- wi
- wy
maxLength: 7
minLength: 2
- type: 'null'
title: State
description: 'Optional jurisdiction to resolve every citation WITHIN: a two-letter state code, or `federal` for the U.S. Code, the C.F.R., federal rules and the U.S. Constitution. Applies to the whole batch: a batch spanning jurisdictions should omit it and let each citation name its own. Same semantics as the single-citation route -- a constraint, not a hint.'
examples:
- ca
corpusType:
anyOf:
- type: string
enum:
- CONSTITUTION
- REGULATION
- STATE
- STATE_CONSTITUTION
- STATE_RULES
- type: 'null'
title: Corpustype
description: 'Optional corpus to resolve every citation WITHIN: `STATE` (statutory text, federal or state), `REGULATION` (administrative codes), `STATE_RULES` (court rules), `CONSTITUTION` (constitutional text), `STATE_CONSTITUTION` (constitutional text; a synonym of `CONSTITUTION` here, since `state` is what separates the two). Same semantics as the single-citation route.'
examples:
- REGULATION
additionalProperties: false
type: object
required:
- citations
title: StatuteResolveBatchRequest
description: 'Batch citation resolution. See `POST /us/statutes/resolve`.
`/resolve` took 1,159 calls in the 16 days to 2026-08-31, second only to
search, and every one of them carried a single citation. The caller shape it
is actually serving is an agent handed a brief, a memo or a model''s output
with thirty citations in it, doing thirty round trips to check them.'
BodyFigure:
properties:
figureId:
type: string
title: Figureid
description: Stable id for this figure, also carried on the `
` element in `html`. Deterministic, so it does not change between renders of the same source.
examples:
- fig_3f2a9c0d1e4b5a67
kind:
type: string
enum:
- figure
- equation
- image
- form
title: Kind
description: What the image is. `equation` renders inline in the text.
default: figure
caption:
anyOf:
- type: string
- type: 'null'
title: Caption
description: The publisher's caption, when it prints one.
alt:
anyOf:
- type: string
- type: 'null'
title: Alt
description: Alternative text for the image.
url:
anyOf:
- type: string
- type: 'null'
title: Url
description: Where the image is hosted, always on `statutes-us.vaquill.ai`. A format a browser cannot display (TIFF, EPS, PDF) is served as a PNG. Null when `status` is `unavailable`.
examples:
- https://statutes-us.vaquill.ai/figures/9b2e...c41.gif
sourceUrl:
anyOf:
- type: string
- type: 'null'
title: Sourceurl
description: The image as the government publisher serves it. Use it for a "view at source" link, especially when `status` is `unavailable`. Null when we hold no publishable link.
examples:
- https://www.ecfr.gov/graphics/er13my11.020.gif
width:
anyOf:
- type: integer
- type: 'null'
title: Width
description: Pixel width of the hosted image.
height:
anyOf:
- type: integer
- type: 'null'
title: Height
description: Pixel height of the hosted image.
mimeType:
anyOf:
- type: string
- type: 'null'
title: Mimetype
examples:
- image/gif
order:
type: integer
title: Order
description: 1-based position among the section's figures.
default: 0
offsetMarkdown:
anyOf:
- type: integer
- type: 'null'
title: Offsetmarkdown
description: Character offset of this figure's placeholder in `markdown`, so a client can splice the image into its own layout.
offsetPlain:
anyOf:
- type: integer
- type: 'null'
title: Offsetplain
description: 'Character offset of this figure''s `[Figure N: ...]` placeholder in `plain`.'
status:
type: string
enum:
- hosted
- unavailable
title: Status
description: '`unavailable` means the publisher''s image could not be fetched. The figure is still listed, and its caption and placeholder stay in the text, so a missing figure is never silently dropped.'
default: hosted
type: object
required:
- figureId
title: BodyFigure
description: One figure, equation or form image inside a rendered section body.
StatuteResolveResponse:
properties:
resolved:
type: boolean
title: Resolved
description: True when the citation resolved to an exact section.
inputCitation:
type: string
title: Inputcitation
description: The citation string you asked to resolve, echoed back.
section:
anyOf:
- $ref: '#/components/schemas/StatuteResult'
- type: 'null'
description: The resolved section, or null when the citation did not resolve.
subsection:
anyOf:
- type: string
- type: 'null'
title: Subsection
description: 'Parsed pinpoint subsection when the citation carried one, e.g. ''b.2'' for ''42 U.S.C. 1983(b)(2)''. The returned section is the parent. It is also set when the citation names a unit SMALLER than the one the publisher issues: Rhode Island cites a regulation by section (''250-RICR-120-05-15.2'') but publishes the whole Part, so `section` is Part 15 and `subsection` is ''15.2''. A non-null `subsection` always means `section` is the containing document, not the exact unit you cited.'
citationOutsideFilters:
anyOf:
- $ref: '#/components/schemas/CitationOutsideFilters'
- type: 'null'
description: 'Set only when `resolved` is false because your `state` or `corpusType` scope excludes a section this citation DOES name, e.g. `42 U.S.C. 1983` under `state=ca`. The scope is a constraint, so the verdict stays `resolved: false`; this says why, so an unresolved result is not read as ''no such section''. Retry without the scope named in `excludedBy` to resolve it. No extra charge.'
matchedCorpus:
anyOf:
- type: string
const: session_law
- type: 'null'
title: Matchedcorpus
description: Present only when the citation names a STATE session law (an act as enacted, for example `CHAPTER 2025-12` or `S.F.No. 1552`) rather than a code section. `resolved` stays false and `section` stays null, because both describe a code section; the law is in `sessionLaw`.
sessionLaw:
anyOf:
- $ref: '#/components/schemas/SessionLawCitationMatch'
- type: 'null'
description: The state session law this citation names, when it names no code section. `status` is `matched` (one law, read it at `href`) or `ambiguous` (several, all in `candidates`, none chosen for you). Absent when the citation resolved to a section, and whenever session laws cannot be checked. No extra charge.
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 240.5
creditsConsumed:
type: number
title: Creditsconsumed
description: '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.'
default: 0.0
examples:
- 4
type: object
required:
- resolved
- inputCitation
title: StatuteResolveResponse
description: Response for `GET /us/statutes/resolve`.
SessionLawSession:
properties:
code:
type: string
title: Code
description: Session code, `{year}{type}{ordinal}`. `type` is `R` regular, `S` special, `X` extraordinary, `F` fiscal, `V` veto, `U` unknown. A regular session has no ordinal (`2025R`); a numbered special session carries it (`2025S1`, the first special session of 2025); a lettered one carries its letter (`2025SC`, Florida's Special Session C). `year` is the year the publisher numbers the session by, which for a period spanning two years is the first (District of Columbia Council Period 25 is `2023R`). Pass it as `session` to `GET /us/session-laws/list`.
examples:
- 2025R
- 2025S1
label:
anyOf:
- type: string
- type: 'null'
title: Label
description: The session's canonical label, as the publisher names it.
examples:
- 2025 Regular Session
- 2025 1st Special Session
type:
anyOf:
- type: string
- type: 'null'
title: Type
description: '`regular`, `special`, `extraordinary`, `fiscal`, `veto` or `unknown`.'
examples:
- regular
year:
anyOf:
- type: integer
- type: 'null'
title: Year
description: The year the session convened, the same year `code` starts with.
examples:
- 2025
type: object
required:
- code
title: SessionLawSession
description: The legislative session a law was enacted in.
CitationOutsideFilters:
properties:
actId:
type: string
title: Actid
description: The section the citation names. Pass it to `/section/{actId}` to read it.
examples:
- USC_T42_C21_S1983
citation:
anyOf:
- type: string
- type: 'null'
title: Citation
description: That section's citation, as it appears in results.
examples:
- 42 U.S.C. § 1983 (2026)
title:
anyOf:
- type: string
- type: 'null'
title: Title
description: That section's heading.
examples:
- Civil action for deprivation of rights
state:
anyOf:
- type: string
- type: 'null'
title: State
description: 'That section''s jurisdiction: `federal` or a two-letter state code.'
examples:
- federal
corpusType:
anyOf:
- type: string
- type: 'null'
title: Corpustype
description: That section's corpus, e.g. `USC`, `CFR`, `STATE`.
examples:
- USC
excludedBy:
items:
type: string
type: array
title: Excludedby
description: 'The request filters that exclude the section, by their public names (`state`, `corpusType`, `code`, `article`, `titleNumber`, `chapter`, `part`, `yearFrom`, `yearTo`). Empty when the exclusion comes from a condition only the index can attribute (`excludeRepealed`, `actStatus`, `source`, `changedSince` and the Federal Register facets): then any of the filters you set may be responsible.'
examples:
- - state
type: object
required:
- actId
title: CitationOutsideFilters
description: 'A citation that names a real section the caller''s own filters exclude.
Both `/search` and `/resolve` treat a filter as a promise: a citation outside
it is not forced into the results. This says so, instead of leaving a caller
to read an unrelated top hit (or `resolved: false`) as "no such section".'
StatuteSectionsResponse:
properties:
sections:
items:
$ref: '#/components/schemas/StatuteResult'
type: array
title: Sections
description: Found sections, in the order the ids were supplied.
notFound:
items:
type: string
type: array
title: Notfound
description: Identifiers with no match. These are NOT charged, so a batch with misses costs less than `len(actIds)` times the per-section rate.
notFoundDetail:
items:
$ref: '#/components/schemas/StatuteSectionsNotFoundDetail'
type: array
title: Notfounddetail
description: One entry per id in `notFound`, saying whether the id was assembled rather than taken from a search result, and suggesting the real ids where they could be recovered. Diagnostic only and never charged; it can come back empty if the lookup is unavailable, so treat it as a hint rather than a contract.
resolved:
items:
$ref: '#/components/schemas/SectionIdentifierResolution'
type: array
title: Resolved
description: 'One entry per input that did NOT match as sent: a citation resolved to its section, or an id cleaned of whitespace, quotes or a trailing period. Use it to map your inputs onto `sections`, which carry the real act_ids. Empty when every input was an exact id.'
count:
type: integer
title: Count
description: Number of sections returned.
default: 0
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 240.5
creditsConsumed:
type: number
title: Creditsconsumed
description: '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.'
default: 0.0
examples:
- 4
type: object
title: StatuteSectionsResponse
description: Response for `POST /us/statutes/sections`.
SectionIdentifierResolution:
properties:
input:
type: string
title: Input
description: The identifier exactly as you sent it.
examples:
- 26 U.S.C. § 1
actId:
type: string
title: Actid
description: The act_id it matched. Send this next time to skip resolution.
examples:
- USC_T26_C1_S1
via:
type: string
enum:
- normalized_id
- citation
title: Via
description: '`citation` -- your input was a citation, resolved with the same resolver as `GET /us/statutes/resolve`. Check it the way you would check a `/resolve` answer. `normalized_id` -- your input was an act_id carrying surrounding whitespace, quotes, a trailing period or double percent-encoding, which were removed.'
examples:
- citation
subsection:
anyOf:
- type: string
- type: 'null'
title: Subsection
description: The pincite your citation carried, e.g. `(h)(11)` for `26 U.S.C. § 1(h)(11)`. The WHOLE section is served; use `structured=true` on `/body` to address the subsection.
examples:
- (h)(11)
type: object
required:
- input
- actId
- via
title: SectionIdentifierResolution
description: 'How the identifier you sent was matched, when it was not an exact act_id.
Present only when the input did NOT match as sent. Absent (null) means the
section is exactly the act_id in your request.'
UsStatutesDivisionsResponse:
properties:
corpusType:
type: string
title: Corpustype
description: The corpus being walked, echoed back from the request.
examples:
- USC
state:
anyOf:
- type: string
- type: 'null'
title: State
description: The jurisdiction, for state-scoped corpora.
level:
type: string
title: Level
description: 'Kind of children returned: `titles`, `chapters`, `parts`, `codes`, `articles`, or `sections`.'
parentLabel:
anyOf:
- type: string
- type: 'null'
title: Parentlabel
description: Human label for the container these divisions sit under.
divisions:
items:
$ref: '#/components/schemas/UsDivisionNode'
type: array
title: Divisions
description: The child divisions, in statutory (natural) order.
count:
type: integer
title: Count
description: Number of divisions returned.
default: 0
nextCursor:
anyOf:
- type: string
- type: 'null'
title: Nextcursor
description: 'Opaque token to resume this listing. Present only when `truncated` is true. Pass it back as `cursor` to get the next batch of sections in the same container, and keep going until it comes back null. Treat it as opaque: it encodes a storage position, and building one by hand will not work.
One ordering caveat. `divisions` is sorted into statutory order WITHIN each response, and pages are walked in storage order, so concatenating pages does not give you one globally sorted list. The union of every page is the complete container; sort it yourself once you hold it all.'
examples:
- s~a3f1c2e0-55b1-4a7d-9d02-1f3b6c8e9a44
truncated:
type: boolean
title: Truncated
description: 'True when this container held more sections than one call can walk, so `divisions` is a PREFIX of its contents rather than all of them. Check it before treating a listing as complete: the level that returns sections is bounded, and a container past that bound previously returned a short list that looked whole. When it is true, narrow the scope (drill into a chapter or part rather than a whole code), or page through it with `nextCursor`.'
default: false
examples:
- false
note:
anyOf:
- type: string
- type: 'null'
title: Note
description: Why the result is empty, when it is. Absent on a normal result. An empty `divisions` with a note is an answer; without one it would be ambiguous between a bad identifier and a level this corpus does not store.
examples:
- New York statutes are organized by article, which this corpus does not index.
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 240.5
creditsConsumed:
type: number
title: Creditsconsumed
description: '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.'
default: 0.0
examples:
- 1
type: object
required:
- corpusType
- level
title: UsStatutesDivisionsResponse
description: Response for `GET /us/statutes/divisions`.
ApiDetailError:
properties:
detail:
type: string
title: Detail
description: 'Human-readable reason, safe to surface to an end user. Branch on the HTTP status rather than on this string: the wording is not part of the contract and may be reworded, but 401 (bad key), 402 (out of credits), 403 (missing scope), 404 (no such resource) and 429 (rate limited) are stable.'
examples:
- Insufficient API credits.
errors:
anyOf:
- items:
$ref: '#/components/schemas/ApiFieldError'
type: array
- type: 'null'
title: Errors
description: 'Present on 422 only: every field that failed validation.'
type: object
required:
- detail
title: ApiDetailError
description: 'Error envelope the API actually returns.
Every error (400/401/402/403/404/405/422/429/5xx) carries a `detail`
string, e.g. `{"detail": "Insufficient API credits."}`, on every mount of
the API. A 422 adds `errors`, one entry per rejected field. Some 404s add
endpoint-specific diagnosis beside `detail` (the statutes section routes
add `actId`, `reason` and `didYouMean`); treat unknown keys as optional.'
SessionLawCitationCandidate:
properties:
sessionLawId:
type: string
title: Sessionlawid
description: Permanent identifier. Pass it to `GET /us/session-laws/{sessionLawId}`.
examples:
- SSL_MN_2025R_G_Y2025_C1
citation:
anyOf:
- type: string
- type: 'null'
title: Citation
description: Canonical citation for the act.
examples:
- CHAPTER 1--S.F.No. 1552
jurisdiction:
type: string
title: Jurisdiction
description: Two-letter state code.
examples:
- mn
session:
$ref: '#/components/schemas/SessionLawSession'
description: The session the law was enacted in.
textStatus:
type: string
enum:
- held
- withheld
- not_held
- pending
title: Textstatus
description: '`held`: the text is served. `withheld`: the law is listed but its text is withheld, see the law itself for why. `not_held` and `pending`: no text yet.'
examples:
- held
title:
anyOf:
- type: string
- type: 'null'
title: Title
description: The act's title, as the publisher prints it (usually `An act relating to ...`). Null when none is printed.
examples:
- An act relating to agriculture; modifying financial reporting requirements for grain buyers; amending Minnesota Statutes 2024, section 223.17, subdivision 6.
billNumber:
anyOf:
- type: string
- type: 'null'
title: Billnumber
description: The bill the act originated as, as the publisher prints it. Null when none is printed.
examples:
- S.F.No. 1552
approvedDate:
anyOf:
- type: string
format: date
- type: 'null'
title: Approveddate
description: Date the governor (or the equivalent authority) approved the act, ISO 8601. Never an effective date. Null when none is printed.
examples:
- '2025-03-17'
effectiveFirst:
anyOf:
- type: string
format: date
- type: 'null'
title: Effectivefirst
description: 'Earliest of the act''s effective dates we hold, ISO 8601. Null when we hold none: a date the publisher does not print, or prints as a relative rule, is not guessed. Read every date from `effectiveDates` on `GET /us/session-laws/{sessionLawId}`.'
examples:
- '2025-09-01'
effectiveLast:
anyOf:
- type: string
format: date
- type: 'null'
title: Effectivelast
description: 'Latest of the act''s effective dates we hold, ISO 8601: equal to `effectiveFirst` when the act takes effect on one date. Null when we hold none.'
examples:
- '2025-09-01'
enactmentOutcome:
anyOf:
- type: string
- type: 'null'
title: Enactmentoutcome
description: 'How the measure became, or failed to become, law: `signed`, `became_law_without_signature`, `veto_overridden`, `line_item_veto` (signed with some items vetoed), `vetoed` and `pocket_veto` (not law), `not_presented`, `approved_by_voters`, or `unknown` when the publisher does not say.'
examples:
- signed
sourceUrl:
anyOf:
- type: string
- type: 'null'
title: Sourceurl
description: The government publisher's own URL for the act's text, so a citation answer links to the primary source. Null when we hold no text source from a government host.
examples:
- https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/
href:
type: string
title: Href
description: Where to read the law, relative to the API host.
examples:
- /api/v1/us/session-laws/SSL_MN_2025R_G_Y2025_C1
isDefault:
type: boolean
title: Isdefault
description: 'True for the publisher''s conventional reading of an ambiguous citation. Informational: no candidate is chosen for you.'
default: false
examples:
- false
type: object
required:
- sessionLawId
- jurisdiction
- session
- textStatus
- href
title: SessionLawCitationCandidate
description: One session law a citation names.
BodyTable:
properties:
tableId:
type: string
title: Tableid
examples:
- t1
order:
type: integer
title: Order
description: 1-based position among the section's tables.
default: 0
caption:
anyOf:
- type: string
- type: 'null'
title: Caption
description: The table's caption, when it has one.
rows:
type: integer
title: Rows
description: Row count, header rows included.
default: 0
cols:
type: integer
title: Cols
description: Column count.
default: 0
type: object
required:
- tableId
title: BodyTable
description: One table inside a rendered section body.
StatuteDefinitionTerm:
properties:
term:
type: string
title: Term
description: The defined term, as the statute writes it.
examples:
- person
definition:
type: string
title: Definition
description: What the statute says the term means, verbatim.
marker:
anyOf:
- type: string
- type: 'null'
title: Marker
description: The enumerator the definition sits under (e.g. `1`, `a`, `A`), where the source paragraph-numbers its definitions.
examples:
- '1'
type: object
required:
- term
- definition
title: StatuteDefinitionTerm
description: One defined term drawn from a chapter's definitions section.
StatuteChangeEvent:
properties:
id:
type: integer
title: Id
description: Stable identifier for this change. Monotonic across the whole corpus, so it doubles as the paging cursor, and it is the id the board-watch diff endpoint takes.
examples:
- 91
changeKind:
type: string
enum:
- added
- amended
- removed
title: Changekind
description: '`added`: the section first appeared. `amended`: its text was replaced. `removed`: it disappeared from a full refresh of the source, which usually means repealed or renumbered. Note that a narrow, section-scoped refresh cannot observe a removal, so absence of a `removed` event is not proof a section still stands.'
examples:
- amended
detectedAt:
type: string
title: Detectedat
description: 'When our refresh OBSERVED the change, ISO-8601 UTC. An upper bound on the effective date, never the effective date itself: a source published weekly is seen up to a week late. Do not present it to an end user as when the law changed.'
examples:
- '2026-08-07T04:10:00Z'
citation:
anyOf:
- type: string
- type: 'null'
title: Citation
description: The section's citation as recorded at capture time. Null for corpora that do not carry one; `displayCitation` always has something readable.
examples:
- 21 CFR 314.50
displayCitation:
anyOf:
- type: string
- type: 'null'
title: Displaycitation
description: 'Always human-readable: the stored citation, or one derived from the section''s hierarchy when the source recorded none. Use this for display and `citation` only when you specifically need what capture recorded.'
examples:
- 21 C.F.R. § 314.50
title:
anyOf:
- type: string
- type: 'null'
title: Title
description: The section heading as of this change. Null where the source carries none.
examples:
- Content and format of an NDA
hasDiff:
type: boolean
title: Hasdiff
description: 'Whether the superseded text was captured, so a before/after diff can be rendered for this event. Always false for `added` (there is no before). Retrieving the diff itself needs a board watch covering this source: `GET /boards/watches/{watchId}/changes/{changeId}/diff`.'
default: false
corpusType:
type: string
title: Corpustype
description: The board this change was captured on, e.g. `cfr`, `usc`, `state_regulation`. This is the value to subscribe to if you want alerts on future changes to this section.
examples:
- cfr
state:
anyOf:
- type: string
- type: 'null'
title: State
description: Two-letter state code for state corpora, null for federal ones.
examples:
- wa
type: object
required:
- id
- changeKind
- detectedAt
- corpusType
title: StatuteChangeEvent
description: 'One time this section was added, amended, or removed by its publisher.
An OBSERVED change, not a publisher-declared one. It exists because a
refresh of the source corpus found this section''s text different from the
copy we already held, so it carries the date WE detected it, which is at or
after the date the change took effect. For the publisher''s own effective
and amendment dates, read `amendmentHistory` on the section itself.'
StatuteSectionNotFoundError:
properties:
detail:
type: string
title: Detail
description: Human-readable reason, safe to show a user. Branch on `reason`, not on this string.
examples:
- Section not found. This id does not exist, but the section does, ...
actId:
type: string
title: Actid
description: The identifier exactly as you sent it.
reason:
type: string
enum:
- assembled_id
- unresolved_citation
- not_in_corpus
- missing_act_id
- state_session_law
title: Reason
description: '`assembled_id` -- the id does not exist but the section does, under the ids in `didYouMean` (usually an id built by hand from a citation, or sent in the wrong case). `unresolved_citation` -- the input is a citation and resolves to nothing we hold; check it with `/us/statutes/resolve`. `not_in_corpus` -- nothing matched. `missing_act_id` -- the URL left the id out, so an endpoint name (`body`, `changes`, ...) sits where the id goes; `detail` names the path you meant. Never charged. `state_session_law` -- the id starts `SSL_`: it names a STATE session law (an act as enacted), which is not a code section; read it at `GET /us/session-laws/{sessionLawId}`.'
examples:
- assembled_id
didYouMean:
items:
type: string
type: array
title: Didyoumean
description: Real act_ids for the section your id pointed at, best first, at most 3.
examples:
- - USC_T26_C1_S1
type: object
required:
- detail
- actId
- reason
title: StatuteSectionNotFoundError
description: The 404 from any `/us/statutes/section/{act_id}/...` route.
SessionLawDate:
properties:
kind:
anyOf:
- type: string
- type: 'null'
title: Kind
description: 'What the date is, on `otherDates`: `approved`, `filed` or `other` (`kindAsPrinted` carries the publisher''s label for `other`). Null on `effectiveDates`, where every entry is an effective date.'
examples:
- approved
- other
- null
date:
anyOf:
- type: string
format: date
- type: 'null'
title: Date
description: The date as ISO 8601 when the printed text could be read as one. Null when the publisher's wording is not a calendar date.
examples:
- '2025-03-17'
dateAsPrinted:
anyOf:
- type: string
- type: 'null'
title: Dateasprinted
description: The date exactly as the publisher wrote it, including any time of day.
examples:
- March 17, 2025, 10:54 a.m.
- 06/20/25
kindAsPrinted:
anyOf:
- type: string
- type: 'null'
title: Kindasprinted
description: The publisher's own label for what the date is, when it prints one.
examples:
- Presentment Date
- Presented to the governor
scopeAsPrinted:
anyOf:
- type: string
- type: 'null'
title: Scopeasprinted
description: 'What the date applies to when it is not the whole act, as printed: an act can take effect in parts. Null when the date applies to the act as a whole.'
examples:
- CCP §871.20.
- null
type: object
title: SessionLawDate
description: One printed date on a session law.
StatuteBodyResponse:
properties:
actId:
type: string
title: Actid
description: The act_id of the section served. Equal to your request unless `resolvedFrom` is set, in which case it is the id your citation or cleaned-up input resolved to.
examples:
- USC_T42_C21_S1983
html:
anyOf:
- type: string
- type: 'null'
title: Html
description: 'The section text as HTML. When `source` is `r2_render` this is our structured rendering of the publisher''s source: real `
` elements (with `
`, `colspan` and `rowspan`) and `` / `` elements at the position the publisher prints them, with images hosted on `statutes-us.vaquill.ai`. When `source` is `r2_s3` this is the publisher''s own markup (tables, paragraph structure, history lines), cut to the section''s own content where we recognise the publisher''s page layout. For any other `source` the text was not held as per-section HTML, and `html` carries the same text as `plain` with no markup.'
plain:
anyOf:
- type: string
- type: 'null'
title: Plain
description: Plain text version.
source:
anyOf:
- type: string
- type: 'null'
title: Source
description: 'Which copy the text came from: `r2_render` (our structured rendering, carrying `markdown`, `tables` and `figures`), `r2_s3` (the publisher''s page for this section), `r2_text` (our per-section text extraction), `qdrant_reconstructed` (reassembled from indexed passages), and on `asOf` requests `stored_edition` or `corpus_change_history`. A storage identifier, not a citation: cite `sourceUrl`.'
sourceUrl:
anyOf:
- type: string
- type: 'null'
title: Sourceurl
description: 'Where this text was published by the government, so the bytes you were served can be cited and verified against the official record. Null when we hold no publishable link for the section: a third-party compiler is never served here, and an absent link is the correct answer in that case. `source` is a storage identifier and is NOT a citation.'
examples:
- https://www.govinfo.gov/content/pkg/USCODE-2024-title17/html/USCODE-2024-title17-chap1-sec107.htm
content:
anyOf:
- type: string
- type: 'null'
title: Content
description: 'The OPERATIVE TEXT of the section, with the source credit and the notes apparatus removed. This is the law; `plain` is the law plus everything the publisher prints around it.
Populated for **United States Code** sections, where GPO delimits the fields in the granule it publishes. Null for CFR and for state corpora, whose sources carry no equivalent structure -- null means "we cannot split this reliably", never "this section is empty", and `plain` is still the whole body.
Worth using if you feed sections to a model: the operative text is a median 46% of `plain` across USC and as little as 3.4% (`17 U.S.C. § 107`, where nearly all of the body is committee reports and amendment notes). A model handed the full body can quote a 1992 amendment note as the law in force.'
examples:
- Notwithstanding the provisions of sections 106 and 106A, the fair use...
sourceCredit:
anyOf:
- type: string
- type: 'null'
title: Sourcecredit
description: 'The publisher''s credit line for the section, e.g. `(Pub. L. 94-553, title I, §101, Oct. 19, 1976, 90 Stat. 2546; ...)`. Split out of the body rather than left inside it.
The same value is also on `GET /us/statutes/section/{actId}` as `sourceCredit`; it is repeated here so a caller fetching the text does not need a second call to know what enacted it.'
examples:
- (Pub. L. 94-553, title I, §101, Oct. 19, 1976, 90 Stat. 2546)
notes:
anyOf:
- type: string
- type: 'null'
title: Notes
description: 'The notes apparatus the publisher prints after the section: Historical and Revision Notes, committee reports, Editorial Notes (codification and amendments), Statutory Notes and Related Subsidiaries (effective dates), and any guidelines reprinted by the editors.
Kept, not discarded: it is the legislative history, and it is the reason a section''s body can be twenty times the length of the law. It is simply NOT the operative text, so it is served as its own field. Null where we cannot split the body.
Also null, deliberately, when you pass `format=operative`: that is the one format that asks us to leave the apparatus off the wire. Null there means "not sent", not "none exists" -- the same request at `format=content` returns it.'
examples:
- 'Historical and Revision Notes
house report no. 94–1476...'
available:
type: boolean
title: Available
description: Whether full text is available.
default: true
note:
anyOf:
- type: string
- type: 'null'
title: Note
description: Note if text is unavailable.
markdown:
anyOf:
- type: string
- type: 'null'
title: Markdown
description: 'The body as GitHub-flavoured Markdown. When `source` is `r2_render` this is the structured rendering: tables as GFM pipe tables (a caption line above, footnotes below, multi-level headers joined as `Parent / Child`) and figures as `` at their position in the text. Returned only when `format` is `all` or `markdown`, not on the default `both`, where it would be a third full copy.
For a section with no structured rendering, `markdown` is null unless you pass `structured=true`, in which case it is the body as nested Markdown lists (the pre-existing behaviour). When both exist the structured rendering wins, because it is the one that keeps the tables; `subsections` is returned either way.'
tables:
anyOf:
- items:
$ref: '#/components/schemas/BodyTable'
type: array
- type: 'null'
title: Tables
description: 'The tables in the body, in document order, with their size. An empty list means the section has none. Null means not known: the section''s corpus has no structured rendering yet, so a table may still be present in `html`.'
figures:
anyOf:
- items:
$ref: '#/components/schemas/BodyFigure'
type: array
- type: 'null'
title: Figures
description: 'The figures, equations and form images in the body, in document order, with hosted image urls and each one''s offset into `markdown` and `plain`. An empty list means the section has none. Null means not known: the section''s corpus has no structured rendering yet.'
hasTables:
anyOf:
- type: boolean
- type: 'null'
title: Hastables
description: True when the body contains at least one table, false when it contains none. Null when not known, because the section's corpus has no structured rendering yet.
hasFigures:
anyOf:
- type: boolean
- type: 'null'
title: Hasfigures
description: True when the body contains at least one figure, equation or form image, false when it contains none. Null when not known, because the section's corpus has no structured rendering yet.
subsections:
anyOf:
- items:
$ref: '#/components/schemas/SubsectionNode'
type: array
- type: 'null'
title: Subsections
description: The section broken into its lettered and numbered subsections, nested as they appear in the text. Use it to quote or link a single clause rather than the whole section. Present only when `structured=true`.
asOf:
anyOf:
- $ref: '#/components/schemas/AsOfProvenance'
- type: 'null'
description: Present only when the request passed `asOf`. Says WHICH version of the section you are holding and how far the evidence for it goes. Read `isBounded` before treating the text as the law on that date.
resolvedFrom:
anyOf:
- $ref: '#/components/schemas/SectionIdentifierResolution'
- type: 'null'
description: 'Null when the section is exactly the act_id you sent. Otherwise how your input was matched: a citation, or an act_id with transport damage (whitespace, quotes, a trailing period) removed.'
processingTimeMs:
type: number
title: Processingtimems
description: Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
default: 0.0
examples:
- 240.5
creditsConsumed:
type: number
title: Creditsconsumed
description: '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.'
default: 0.0
examples:
- 4
type: object
required:
- actId
title: StatuteBodyResponse
description: Full text of a statute section in HTML and/or plain text.
StatuteSectionsNotFoundDetail:
properties:
actId:
type: string
title: Actid
description: The identifier from your request that did not resolve.
reason:
type: string
title: Reason
description: '`assembled_id` -- this id does not exist, but the section does, under the ids in `didYouMean`. Almost always an id built from a citation: the chapter/article/part segments are not derivable from one, so take ids from a `/us/statutes/search` response instead. `unresolved_citation` -- the input is a citation and resolves to nothing we hold; check its form with `/us/statutes/resolve`. `not_in_corpus` -- nothing matching was found. Either the id is malformed beyond recovery, or the section is genuinely absent; check `/us/statutes/coverage` for the jurisdiction. `state_session_law` -- the id starts `SSL_`: a state session law (an act as enacted), read at `GET /us/session-laws/{sessionLawId}`, not a code section.'
examples:
- assembled_id
didYouMean:
items:
type: string
type: array
title: Didyoumean
description: Real act_ids carrying the section number your id pointed at, best match first, at most 3. Empty when nothing matched. Send one of these back to `/us/statutes/sections` to get the section.
examples:
- - STATE_CO_T38_A12_P1_S38-12-103
type: object
required:
- actId
- reason
title: StatuteSectionsNotFoundDetail
description: 'Why one `actId` missed, and what to send instead.
A bare id in `notFound` is ambiguous between the two things a caller most
needs to tell apart: an id they built by hand that never existed, and a real
section we do not hold. Read as the latter, the first one looks like missing
coverage, which is how a working integration gets abandoned.'
StatuteCountRequest:
properties:
corpusType:
anyOf:
- type: string
enum:
- USC
- CFR
- STATE
- CONSTITUTION
- FEDERAL_RULES
- FEDERAL_LOCAL_RULES
- STATE_CONSTITUTION
- STATE_RULES
- EXECUTIVE_ACTION
- REGULATION
- FEDERAL_REGISTER
- FEDERAL_REGISTER_NOTICE
- AGENCY_GUIDANCE
- SENTENCING_GUIDELINES
- US_TAX_TREATY
- STATE_AGENCY_GUIDANCE
- STATE_AG_OPINION
- SESSION_LAW
- STATUTE_COMPILATION
- AGENCY_ADJUDICATION
- CFR_ANNUAL
- USC_ANNUAL
- items:
type: string
enum:
- USC
- CFR
- STATE
- CONSTITUTION
- FEDERAL_RULES
- FEDERAL_LOCAL_RULES
- STATE_CONSTITUTION
- STATE_RULES
- EXECUTIVE_ACTION
- REGULATION
- FEDERAL_REGISTER
- FEDERAL_REGISTER_NOTICE
- AGENCY_GUIDANCE
- SENTENCING_GUIDELINES
- US_TAX_TREATY
- STATE_AGENCY_GUIDANCE
- STATE_AG_OPINION
- SESSION_LAW
- STATUTE_COMPILATION
- AGENCY_ADJUDICATION
- CFR_ANNUAL
- USC_ANNUAL
type: array
- type: 'null'
title: Corpustype
description: Corpus to count, single or list. Omit to count every corpus.
examples:
- REGULATION
state:
anyOf:
- type: string
enum:
- federal
- al
- ak
- az
- ar
- ca
- co
- ct
- de
- dc
- fl
- ga
- gu
- hi
- id
- il
- in
- ia
- ks
- ky
- la
- me
- md
- ma
- mi
- mn
- ms
- mo
- mt
- ne
- nv
- nh
- nj
- nm
- ny
- nc
- nd
- mp
- oh
- ok
- or
- pa
- pr
- ri
- sc
- sd
- tn
- tx
- ut
- vt
- va
- wa
- wv
- wi
- wy
- items:
type: string
enum:
- federal
- al
- ak
- az
- ar
- ca
- co
- ct
- de
- dc
- fl
- ga
- gu
- hi
- id
- il
- in
- ia
- ks
- ky
- la
- me
- md
- ma
- mi
- mn
- ms
- mo
- mt
- ne
- nv
- nh
- nj
- nm
- ny
- nc
- nd
- mp
- oh
- ok
- or
- pa
- pr
- ri
- sc
- sd
- tn
- tx
- ut
- vt
- va
- wa
- wv
- wi
- wy
type: array
- type: 'null'
title: State
description: Two-letter jurisdiction code or `federal`, single or list.
examples:
- tx
code:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Code
description: State code identifier, e.g. `tx_26`. With `corpusType=FEDERAL_RULES`, a rule set instead (`frcp`, `uscapp_t28a_fre`). Same values and checks as `code` on `/search`.
examples:
- tx_26
article:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Article
description: Article label (`Amendment XIV`) on CONSTITUTION / STATE_CONSTITUTION, or article number (`2-A`) on a STATE / REGULATION code divided by article. Same values and pairing rules as `article` on `/search`.
examples:
- Amendment XIV
titleNumber:
anyOf:
- type: integer
minimum: 1.0
- type: 'null'
title: Titlenumber
description: USC or CFR title number.
examples:
- 42
chapter:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Chapter
description: Chapter identifier. Pair with `titleNumber` or `code`.
examples:
- '554'
part:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Part
description: CFR part identifier. Pair with `titleNumber`.
examples:
- '240'
actStatus:
anyOf:
- type: string
enum:
- abolished
- deleted
- expired
- in_force
- inactive
- non_precedential
- not_funded
- not_yet_effective
- omitted
- proposed
- recodified
- recompiled
- rejected
- relocated
- removed
- renumbered
- repealed
- rescinded
- reserved
- revoked
- superseded
- terminated
- transferred
- unconstitutional
- vacant
- vacated
- vetoed
- withdrawn
- items:
type: string
enum:
- abolished
- deleted
- expired
- in_force
- inactive
- non_precedential
- not_funded
- not_yet_effective
- omitted
- proposed
- recodified
- recompiled
- rejected
- relocated
- removed
- renumbered
- repealed
- rescinded
- reserved
- revoked
- superseded
- terminated
- transferred
- unconstitutional
- vacant
- vacated
- vetoed
- withdrawn
type: array
- type: 'null'
title: Actstatus
description: Count only sections carrying this status.
examples:
- repealed
excludeRepealed:
type: boolean
title: Excluderepealed
description: Exclude sections whose status is affirmatively dead. A section with no recorded status is KEPT, because a missing status is not evidence of repeal. The US Code is served from a stored annual edition, so a section repealed after it closed is counted here; see the same field on `/search` for the measurement.
default: false
examples:
- true
additionalProperties: false
type: object
title: StatuteCountRequest
description: 'Filter-only section count. See `POST /us/statutes/count`.
Deliberately takes NO `query`. A count of "sections matching this query"
does not exist: ranking runs over a bounded window, so the honest answer to
that question is the window size rather than a corpus figure. This counts a
SCOPE, which is exact, cheap, and the number an acquisition job actually
needs before it starts walking.'
securitySchemes:
ApiKeyAuth:
type: http
scheme: bearer
bearerFormat: vq_key_*
description: 'API key issued from the developer dashboard. Pass as `Authorization: Bearer vq_key_...` (preferred).'
ApiKeyHeader:
type: apiKey
in: header
name: X-API-Key
description: 'The same API key as a bare header value: `X-API-Key: vq_key_...`. Equivalent to the Bearer form.'
ApiKeyQuery:
type: apiKey
in: query
name: api_key
description: 'The same API key as a query parameter: `?api_key=vq_key_...`. Use only where you cannot set a header. A URL can end up in proxy and server logs, browser history and shared links, so prefer either header form, and rotate a key that has leaked.'
externalDocs:
description: Full API Reference
url: https://www.vaquill.ai/docs/api-reference/
x-refined-from:
- vaquill-ai-openapi.json
- vaquill-ai-openapi.yml