Skip to main content
A rule does not live in one place. The agency lists it on the Unified Agenda, OIRA reviews it under Executive Order 12866, Regulations.gov collects the docket and the comments, the Federal Register prints the proposal and the final rule, and the CFR codifies the result. The Regulation Identifier Number (RIN, for example 2060-AV16) is the thread that ties them together. The Rulemaking API serves those sources side by side, so one call by RIN answers “where is this rule, and what is it linked to”.

What is covered

There are no Regulations.gov comment texts, no attachments and no commenter data. The Rules Committee records below withhold the text of public comments and suggestions too. Regulations.gov keeps no history, so dockets and documents are the current state, with the time we last saw them in asOf.

Endpoints

Six GET routes under /api/v1/us/rulemaking/. Calls are authenticated with an API key that has the research:read scope, as in Authentication. A page is one charge, and an empty page is still charged because it is an answer. A docket or RIN we hold nothing for answers 404, and a 503 from the rulemaking database is refunded. A malformed RIN or a bad cursor answers 422 before any charge. See Errors.

Look up a RIN

The RIN is NNNN-AANN, and lower case is accepted. The response is abridged here:
The values above are placeholders that show the shape, not a recorded answer.

Confidence labels

Every cross-link carries a basis, which says how the link was made, and a quality: Never treat candidate as verified. An ambiguous link carries no actId, and an umbrella RIN claims no pairing at all.

Unified Agenda history

from and to are edition ids (YYYYMM, for example 202510), and from must not be after to. limit is 1 to 100, default 25. Each entry in editions has editionId, season, year, runDate, title, abstract, stage, rinStatus, priority, major, the agency fields, furtherInfoUrl (served only when it is an official .gov or .mil link), publicCommentUrl, and a timetable. Each timetable action has action, dateRaw, dateValue, datePrecision and, when the agency printed one, frCitation.

Dockets and documents

A docket has docketId, agencyId, docketType (Rulemaking or Nonrulemaking), title, abstract, rin, rinSource, spineRin, lastModifiedAt, modifyDate, documentCount, documentTypeCounts, commentCount, commentCountAsOf and sourceUrl. rin is the RIN the agency entered on the docket when there is one. When the agency entered none, it is the single RIN our rulemaking spine holds as verified for the docket, and rinSource says which: regulations_gov for the agency’s own entry, spine for one derived from the spine. rin and rinSource are both null when neither exists, or when the spine names several RINs for the docket, because no pick is made between them. spineRin is set only when the spine holds a verified RIN that differs from the agency’s, and rin then stays the agency’s value. modifyDate is a second modification date and is null when none was recorded; lastModifiedAt is the field the modifiedSince and modifiedUntil window reads. List dockets with filters:
The documents of one docket:
Filters are documentType, openForComment, postedFrom and postedTo. Each document has documentId, documentType, subtype, title, postedAt, commentStartAt, commentEndAt, openForComment, withinCommentPeriod, allowLateComments, withdrawn, cfrPart, frPages, commentCount and sourceUrl. frDocNum is the Federal Register document number as Regulations.gov prints it, and frDocNumNorm is the same number in the form used to join to the Federal Register (2021-03456).

Paging

The list routes return nextCursor, which is null on the last page. Pass it back as cursor with the same filters. A cursor is bound to the filters that produced it, and a cursor used with other filters answers 422 without a charge. See Pagination.

Coverage

This call is free. Each entry in sources has name, rowCounts, latestChange, lastRefreshAt, measuredAt, status and limitations. status is ok, stale or unmeasured. unmeasured means we have not measured that source, not that it is clean. agendaEditions lists the Unified Agenda editions held, and limitations names what is not included.

Rules Committee records

The committee records store is still loading. A record you cannot find may not be loaded yet, so a missing record is not proof that none exists.
Two metered routes serve the records of the Judicial Conference Rules Committees (Standing, Appellate, Bankruptcy, Civil, Criminal and Evidence), taken from uscourts.gov: meeting minutes, agenda books, committee reports, rules packages, preliminary drafts, public comments and rules suggestions. Both use the same research:read scope as the rest of this API.
A list entry has recordId (rcr_ and 24 hex characters), committee, docType, title, meetingDate, publishedDate (each with a precision field), year, sourceUrl, itemUrl, filename, textWithheld, sha256, bytes, pageCount, textStatus, textQuality, withdrawn and asOf. Page text is not in the list.
The single record adds dockets (the comment dockets it is linked to), rules (the Federal Rules it discusses, with actId and mentionCount) and pages. Every docket and rule link carries the method and confidence of the link, so treat a low-confidence link as a candidate. pageFrom starts the window at a page and pageLimit is 1 to 200 pages (default 50). nextPage continues the window, and is null on the last one. One call is one charge whatever the window. An unknown record answers 404 and is refunded, and a 503 from the rulemaking database is refunded. A scanned page has quality: needs_ocr, textAvailable: false and text: null. textStatus and textNotice say so for the record, so empty text is never a blank page.

Withheld text

Public comments (rules_comments, and the archived comment compilations in rules_comments_archive) and rules suggestions (rules_suggestions) name private individuals. For these three types title, filename and all page text are null, textWithheld is true, and textNotice says why. The record, its date, its dockets and its rule links are served, and sourceUrl points at the original on uscourts.gov.

Connect to the rest of the API

  • Federal Register. federalRegister[].actId and reviews[].frActId point at the Federal Register document in the corpus. The document number is frDocNumNorm on a docket document. See Federal coverage for what the Federal Register corpus holds.
  • CFR. cfrParts gives the CFR title and part a rulemaking amends. Browse the part with the statute hierarchy and read the section text from /us/statutes.
  • US Code. publicLaws and craDisapprovals link a rule to the public law behind it or to a Congressional Review Act resolution against it. Resolve a public law or section with citation formats.
  • Law change alerts. To be told when the CFR text changes, use alerts.

Known gaps

  • Few dockets carry a RIN. hasRin=true returns a little over 1,200 dockets today, and most of those carry a RIN derived from our rulemaking spine rather than one the agency entered (rinSource is spine, not regulations_gov). A docket with no RIN, entered or derived, cannot be found by RIN, so absence of a docket on a RIN page is not proof that none exists.
  • Comment counts are mostly absent. commentCount is null for most dockets and documents. null means not measured, never zero. commentCountAsOf says when a count was taken.
  • GAO listing is partial. The GAO major rule report listing does not cover every report.
  • Not every rule is reviewed by OIRA, and Unified Agenda entries exist only for the editions the agency published.
  • Current state only. Regulations.gov keeps no history, so a docket shows what it is now.
  • Link quality varies. Use quality and linkStatus as described above, and call /coverage to see what is held and how fresh it is.
Last modified on November 6, 2026