---
title: "Get the Federal Register documents behind a CFR section"
method: GET
path: "/api/v1/us/statutes/section/{act_id}/rulemaking"
tags: ["US Statutes"]
---

# Get the Federal Register documents behind a CFR section

`GET /api/v1/us/statutes/section/{act_id}/rulemaking`

## Request

- Base URL: `https://api.vaquill.ai`
- URL: `https://api.vaquill.ai/api/v1/us/statutes/section/{act_id}/rulemaking`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`
- TypeScript: <https://skmtc.dev/vaquill/apis/vaquill-developer-api/docs/api/v1/us/statutes/section/:act_id/rulemaking/get.ts> (a function with typed inputs; its response is checked against the schema)

Federal Register documents linked to one CFR section, from two signals.

**Cost**: 2 credits. Not-found and failed lookups are not charged. An `act_id` sent as a
citation (`21 CFR 314.50`) instead of a CFR act id adds the 2-credit `/resolve` fee, kept when the
citation does not resolve.

`printed_note`: the section's printed source note cites `83 FR 1234`, and a Federal Register rule
of the same CFR title and part spans that page of that volume and was published on the date printed.
Pre-1994 citations (`legacyPrintedCitations`) are kept as text and never resolved. `date_join`: a rule referencing the section's
CFR title and part took effect (or was published) on a date eCFR records as an amendment of this
section. `matchBasis` says which; `quality` is `verified` only when both agree and `candidate`
otherwise. Each eCFR version row in `versions` gets a tier: `confirmed`, `candidate` (one date match), `ambiguous` (two or more documents, none picked), `unmatched` (searched, found nothing) or `not_searched` (older than the date-join window, never looked at). A document found only in the printed note, with no version row meeting its dates, is `candidate` in both `quality` and `tier`. Corrections are attached to their parent in `corrections`. A candidate is a lead, not a finding: a rule that touches the part on the same day as
an amendment may not be the one that amended this section. `matchReason` says so on a candidate
that matched on title, part and date only and does not name the section.

**A printed note can be stale.** `noteIsStale` is true when eCFR records an amendment later than
the newest dated citation the note prints. Newer documents then appear only as `date_join`
candidates. `unresolvedCitations` lists printed citations we could not match to a document;
that is absence in our corpus, never proof the citation is wrong. Read `coverage`.

## Path parameters

- `act_id` string, required: Section identifier, e.g. `USC_T42_C21_S1983` (42 U.S.C. § 1983). Take it from a `/us/statutes/search`, `/resolve` or `/divisions` result; do not assemble one. A citation such as `42 USC 1983` also works and adds the `/resolve` price (see `GET /us/statutes/section/{actId}`). State session laws (`SSL_` ids) are read at `/us/session-laws/{sessionLawId}`.

## Headers

- `Idempotency-Key` string, nullable: Optional. 16 to 255 visible ASCII characters (a UUIDv4 works). Repeating the same request with the same key replays the original 2xx response for 24 hours without charging again. The same key on a different request is rejected. With the account's `cacheQueryDerivedData` retention setting off, no body is stored and a retry answers 409 `idempotency_replay_unavailable`, still without a second charge.

## Response `200`

The Federal Register documents that touch the section.

- SectionRulemakingResponse
  - `actId` string, required
  - `resolvedFrom` SectionIdentifierResolution: 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.
    - `input` string, required: The identifier exactly as you sent it.
    - `actId` string, required: The act_id it matched. Send this next time to skip resolution.
    - `via` 'normalized_id' | 'citation', required: `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.
    - `subsection` string, nullable: The pincite your citation carried, e.g. `(h)(11)` for `26 U.S.C. § 1(h)(11)`. The whole section is served; use `pinpoint=(h)(11)` on `/body` to get that subsection, or `structured=true` for the whole tree.
    - `matchLevel` 'container' | 'multiple' | 'repaired' | 'register_reference', nullable: Present only when `section` is NOT the exact unit you cited. `container`: you cited a container in one of the supported forms (a Missouri, New Jersey, West Virginia or Wyoming regulation series or chapter, a constitution article or amendment, an Indiana chapter, an Illinois article, or a U.S. Code chapter such as `18 U.S.C. ch. 96`; a U.S. Code subchapter is not read), and `section` is the FIRST section inside it (see `container` for how many there are and what they are). A state STATUTE chapter, subchapter, title, article or part cited with its container word and a code name we read for that state (`8 Del. C. ch. 1, subch. VII`, `Tex. Penal Code ch. 19`, `N.Y. Penal Law art. 125`, `Mass. Gen. Laws ch. 93A`, `La. R.S. Title 14`) also answers `container`, with `section` the first live section in statutory order, but only where we hold that container and its number is unique within the code. A container we do not hold, a missing or unrecognised code name, a regulation or rule set, or a number that repeats in the code (California repeats chapter numbers across its titles) when the citation names more than one level, returns `resolved: false` with `missReason: container_not_supported`. An article that IS the section unit (`La. Civ. Code art. 2315`, `Tex. Code Crim. Proc. art. 38.23`) is read as a section. To browse chapters, titles and articles use `GET /us/statutes/divisions`. `multiple`: you cited several sections (`§§ 8, 10`, `§§ 1983-1985`) and `section` is the first of them (see `citedSections`), or your citation fits more than one held section (`D.C.COLO.LR 7.1` is both Local Civil and Local Criminal Rule 7.1) and every candidate is listed in `container`; a state statute container number that repeats within its code (`Cal. Penal Code tit. 8` is a title of each of four parts) lists each candidate container's first section there, never picking one, when there are at most 10. `repaired`: the code name you wrote is a recognised miscite and `section` is the one it names (see `repair`); or (`repair.kind: prior_edition`) the text you cited has been replaced by a current one, and `section` is NOT the text you cited: a C.F.R. or U.S.C. section the current code no longer holds, answered with the MOST RECENT historical annual edition we hold, or a superseded rule set whose rule numbers were kept, answered with the current rule (`Tex. R. Civ. Evid. 803` is answered by `Tex. R. Evid. 803`), or a state regulation we hold only as superseded filings, answered with the latest filing (`W. Va. Code R. § 64-14-5`); `repair.interpretedAs` names what was served and why, and `repair.alternatives` lists the other held editions, if any; or (`repair.kind: former_law`, `former_number`) you cited a FORMER section number, recodified or renumbered since, and `section` is the successor the state's own disposition table or history line names, never the former text (a former section split into several answers `multiple`, every successor in `citedSections`). or (`repair.kind: code_name_inferred`) your citation named no code (`CODE ANN. § 73.001`, `Code 4121-3-34`) and `section` is the only one in the state that carries that number, so the code was inferred from the number and not read from your citation; or (`repair.kind: repealed_range`, `renumbered_range`, `range_member`) you cited a New York or California section the publisher printed only inside a run of sections (`6 NYCRR 420.4` inside `420.3 to 420.4`), and `section` is that stub, not the section's own text (`repair.interpretedAs` names the range); `register_reference`: you cited a state register page, and `section` is a rule whose history cites it (see `registerReference`). `resolved` keeps its meaning (a section was returned) and is true at every level; read `matchLevel` to tell an exact section from a first-of-several. Absent for an exact match.
    - `container` ResolveContainerInfo: What the citation named, and what lies inside it.
      - `kind` string, required: What was cited: `chapter`, `subchapter`, `series` (a rule group number such as `5th Cir. R. 47`, held only as `47.1` to `47.10`), `article`, `section` (a constitution section made of numbered paragraphs, or a California regulation held as one document per subsection, `18 CCR 17071` being `(a)` to `(q)`), `amendment`, `document` (a rule set stored as one document holding several editions) or `alternatives` (with `matchLevel: multiple`: the held sections the citation could mean).
      - `label` string, required: The container, as we read your citation.
      - `childCount` integer, required: How many sections the container holds. Always exact, even when `children` is cut.
      - `children` ResolveContainerChild[]: The sections inside, in document order. `section` is the first of them that is in force (the first of all when none is), so it is `children[0]` unless that one is repealed or otherwise not in force. For an `amendment` of a state whose constitution is held as amended text, these are the sections whose own note credits that amendment, which is what the corpus records; a section the corpus does not annotate is not listed.
        - `actId` string, required: The child section's id.
        - `citation` string, nullable: The child's own citation.
        - `status` string, nullable: Its status in the corpus (`in_force`, `repealed`, ...).
      - `truncated` boolean: True when `children` lists fewer than `childCount` sections.
    - `citedSections` string[], nullable: Set with `matchLevel: multiple`. The sections your citation named, as written (a range such as `1983-1985` is one entry); `section` is the first. Omitted from the response when it has no value.
    - `repair` ResolveRepairInfo: A miscite we recognised, and how we read it.
      - `kind` string, required: What was repaired: `code_name` (a recognised miscite of the code name); `prior_edition` (the text you cited has been replaced, so `section` is not it: a C.F.R. or U.S.C. section held only as a historical annual edition, where `interpretedAs` names the edition and its year and `alternatives` the other editions; or a superseded rule set whose numbers were kept, such as the former Texas Rules of Civil and Criminal Evidence, answered with the current rule and the reason in `interpretedAs`; or a state regulation held only as superseded filings, where `interpretedAs` names the latest filing's date and `alternatives` the earlier filings); `code_name_inferred` (the citation named no code, so the only section in the state with that number was served: `interpretedAs` is that section's citation, `cited` the head as you wrote it, and `alternatives` is empty because a number held by two codes is refused, never guessed); `former_law` (you cited a section number the state's code no longer carries, and the state's own disposition table, a code commission comparative table, a revisor's renumbering stub or the Code's history credits, says which current section it became; `cited` is the number you wrote, `interpretedAs` the successor's citation with what the table says: recodified, renumbered or merged, the effective date when the table gives one, and the source. The former text itself is not served; with `matchLevel: multiple` the former section was SPLIT and `citedSections` lists every successor); `former_number` (the same, read from the successor's own history line where the state prints its lineage there: Georgia's `Code 1933, §` and Washington's `Formerly RCW`). Other values name the kind of miscite that was read through, such as `act_section`, `article_edition`, `ca_ucc_article_number`, `cfr_exchange_act_rule`, `cfr_five_digit_part`, `cfr_listing_of_impairments`, `cfr_part_number_mixed`, `cfr_part_omitted`, `cfr_part_truncated`, `cfr_separator`, `cfr_title`, `cfr_title_typo`, `code_article_for_constitution`, `dash_spacing`, `dotted_subdivision`, `duplicated_act`, `federal_label_state_rule`, `footnote_digit`, `former_code_name`, `former_collected`, `former_lpra_repealed_twin`, `former_title_renumbered`, `fused_subdivision`, `fused_subsection`, `fused_subsection_letter`, `glued_et_seq`, `glued_paragraph_letter`, `habeas_rules_stray_number`, `hyphen_restored`, `inside_range`, `letter_suffix_pinpoint`, `local_rule_series_inferred`, `lost_section_sign`, `merged_section`, `nm_rule_set_prefix`, `number_spelling`, `nycrr_title`, `ocr_digits`, `padded_decimal`, `part_and_section`, `pr_appendix_evidence`, `range_member`, `renumbered_provision`, `renumbered_range`, `renumbered_rule`, `renumbered_title`, `restated_rule`, `roman_section`, `set_label`, `slash_for_hyphen`, `snapshot_numbering`, `source_table`, `source_table_split`, `statute_cited_as_regulation`, `tex_statute_under_rule_label`, `title_chapter_form`, `title_dropped`, `title_inferred`, `title_moved`, `trailing_rule`, `transposed_chapter`, `truncated_section`, `usc_appendix_range_point`, `usc_appendix_unique_act`, `usc_cfr_miscite`, `usc_patent_rule_miscite`, `usc_state_code_miscite`, `wrong_rule_set_same_state`, `zero_padded_rule`, `zero_padded_section`, `zero_padding`. The set grows as repairs are added, so treat `kind` as an open string, not a closed enum; `interpretedAs` always says in words what was read.
      - `cited` string, required: The part of your citation we corrected.
      - `interpretedAs` string, required: What we read it as.
      - `alternatives` ResolveRepairAlternative[]: Other sections the name you wrote could also have meant. Empty when the repair was the only reading.
        - `actId` string, required: Another held section the cited name could also have meant.
        - `citation` string, nullable: That section's own citation.
    - `registerReference` ResolveRegisterReference
      - `citation` string, required: The register citation, as we read it.
      - `state` string, required: Two-letter state code of the register.
      - `kind` 'page' | 'range' | 'issue' | 'filing', required: How the citation matched the rules' history notes. `page`: a note cites exactly this volume and page. `range`: a note cites a page range that contains it. `issue`: the citation names a register issue (Colorado, Michigan). `filing`: it names a filing identifier (Washington WSR, Nevada LCB file, Indiana LSA document, Wisconsin register number).
      - `ruleCount` integer, required: How many held rules cite it. Always exact, even when `rules` is cut.
      - `rules` string[]: Their act_ids in document order, starting with the one returned as `section`.
      - `registerItemHeld` boolean: False when `section` is a RULE whose history cites the item (the item itself is not held for this state). True when `section` IS the register item, held under `corpusType=STATE_REGISTER`; then `rules` is that one item and `kind` is `page` (the cite names the page the item starts on) or `range` (a later page of the item).
  - `cfrTitle` integer, required
  - `cfrPart` string, required
  - `federalRegisterDocuments` FederalRegisterDocumentOut[], required
    - `documentNumber` string, required
    - `citation` string, nullable
    - `docType` 'rule' | 'proposed_rule' | 'notice' | 'correction', required
    - `publicationDate` string, date, nullable
    - `effectiveOn` string, date, nullable
    - `docketIds` string[]
    - `rins` string[]
    - `rulemakingUrl` string, nullable: Path of `GET /us/rulemaking/rins/{rin}` for this document's single RIN, so the whole rulemaking (agenda history, OIRA review, dockets, proposed/final links) is one call away. Null unless the rulemaking API is enabled AND the document carries exactly one valid RIN. A pointer only: it claims no proposal-to-final pairing, and a RIN shared by many documents (an umbrella RIN) pairs nothing.
    - `title` string, nullable
    - `matchBasis` 'printed_note' | 'date_join' | 'both', nullable
    - `quality` 'verified' | 'candidate', nullable
    - `tier` 'confirmed' | 'candidate' | 'ambiguous' | 'unmatched' | 'not_searched', nullable
    - `matchReason` string, nullable: Present on a weak `candidate`: the document matched on CFR title, part and date only and does not name this section, so on a large part it may be an unrelated rule.
    - `corrections` string[]
  - `versions` VersionMatchOut[], required
    - `amendmentDate` string, date, nullable
    - `issueDate` string, date, nullable
    - `substantive` boolean, nullable
    - `tier` 'confirmed' | 'candidate' | 'ambiguous' | 'unmatched' | 'not_searched', required
    - `documentNumbers` string[]
  - `legacyPrintedCitations` LegacyCitationOut[], required
    - `volume` integer, required
    - `page` integer, required
    - `printedOn` string, date, nullable
    - `text` string, required
  - `printedNoteCitations` string[], required
  - `unresolvedCitations` string[], required
  - `noteIsStale` boolean, required
  - `coverage` string[], required
  - `processingTimeMs` number, required
  - `creditsConsumed` integer, required

## Other responses

- `401`: Missing, invalid or revoked API key.
- `402`: Insufficient credits (`insufficient_credits`, never retry). `creditsRequired` and `creditsAvailable` say how short you are when known; top up, then repeat the call.
- `404`: No such CFR section. Not charged.
- `409`: Idempotency conflict. `idempotency_in_progress`: the original request with this key is still running (retry after `Retry-After`). `idempotency_replay_unavailable`: it completed but its response was too large to replay; nothing is charged again, so check the credit balance instead of retrying.
- `422`: Not a CFR act_id. Not charged. `idempotency_key_reused`: the `Idempotency-Key` was already used with a different request.
- `429`: Rate limit exceeded.
- `500`: Internal error (`internal_error`, retryable). Any credits charged for the call are refunded; retry with backoff and quote `requestId` to support if it persists.
- `503`: The US statutes corpus is temporarily unavailable. Not charged (refunded if already taken): retry.

## Changes

- **2026-11-07** `340c0d24d0b6`: 2 warning, 57 info
  - added the new `not_searched` enum value to the `federalRegisterDocuments/items/tier/anyOf[subschema #1]/` response property for the response status `200`
  - added the new `not_searched` enum value to the `versions/items/tier` response property for the response status `200`
  - added the non-success response with the status `500`
  - added the non-success response with the status `503`
  - …55 more

[Operation history](https://skmtc.dev/vaquill/apis/vaquill-developer-api/changes/api/v1/us/statutes/section/:act_id/rulemaking/get.md)

---

[API](https://skmtc.dev/vaquill/apis/vaquill-developer-api.md) - [All operations](https://skmtc.dev/vaquill/apis/vaquill-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vaquill/apis/vaquill-developer-api/revisions/340c0d24d0b6?raw)
