Short answer: federal sub-regulatory guidance is queryable as one corpus through a single search call, with corpusType=AGENCY_GUIDANCE and 34 named source codes underneath it. That covers 21,906 documents: the DOJ Justice Manual, the USCIS Policy Manual, MPEP and TMEP, IRS revenue rulings and notices, OCC and FDIC and Federal Reserve letters, FinCEN rulings, CFTC staff letters, HHS OCR HIPAA material, export-control advisory opinions, and more. None of it is binding law the way a statute or a final rule is. All of it is what the people who actually enforce those rules read first.
TL;DR
- Sub-regulatory guidance is what an agency says its own rules mean, issued without notice-and-comment rulemaking. It does not carry the force of law, and it still decides most real-world outcomes.
- 34 named sources, 21,906 documents, one
corpusTypetoken. Sources are split with thesourcefilter, so a new source lands as a registry entry instead of a new API token your integration has to learn. - Pass an unknown
sourcevalue and you get a 422 whose error body lists every valid code with a human-readable label. The filter documents itself. - Two archives are frozen on purpose. CPSC Office of General Counsel advisory opinions run 1973 to 2012, and BIS advisory opinions run 2003 to 2023. Both are historical records, not live feeds.
- One source is a rolling window. NLRB Division of Advice Memoranda hold a 10-year window, not the full archive. That is stated in the API's own error text, not buried in a footnote.
- Every result carries the publisher's own URL. Guidance comes from the issuing agency's site, never from a commercial aggregator.

What makes sub-regulatory guidance different from a final rule?
This post is the map for our federal agency guidance series.
For related coverage, see DOJ Justice Manual API: 1,548 Sections of Federal Prosecution Policy, IRS Guidance API: Revenue Rulings, Revenue Procedures, Notices, and Announcements, Banking and AML Guidance API: OCC, FDIC, Federal Reserve, and FinCEN in One Query, and MPEP and TMEP API: Patent and Trademark Examining Procedure You Can Query.
What sub-regulatory guidance is
Start with the ladder. Congress passes a statute. An agency writes a rule under that statute, runs notice-and-comment, and the final rule lands in the Code of Federal Regulations. That rule binds you.
Then the agency has to explain the rule to its own staff and to the public. That explanation is sub-regulatory guidance: manuals, policy statements, interpretive letters, advisory opinions, no-action letters, FAQs, memoranda. It skips notice-and-comment, so a court is not bound by it.
Here is the part that trips up engineers building compliance tooling. Guidance is not binding, and it is still the operative document for almost everyone you will ever deal with. A patent examiner works from the MPEP. An OCC examiner works from OCC bulletins. A federal prosecutor deciding whether to charge your client's company works from the Justice Manual. An immigration officer works from the USCIS Policy Manual.
A compliance program that indexes only the 219,114 sections of the CFR is reading the law and missing the practice. That gap is where programs fail audits.
The 34 sources, by agency family
Counts below are document counts measured 2026-08-30. Long documents index as several retrieval passages, so a passage count runs well above a document count. The IRS row carries four source codes on one line, which is why 31 rows add up to 34 codes.
Tax
| Source | source code | Docs | Window |
|---|---|---|---|
| IRS Revenue Procedures, Revenue Rulings, Notices, Announcements | irs_rev_proc, irs_rev_rul, irs_notice, irs_announcement | 1,469 combined | 2015 to present |
| Synthesized administrative guidance (SALT cap, CTC, 401k limits) | administrative_guidance | see note | rolling |
Banking, markets, and AML
| Source | source code | Docs | Window |
|---|---|---|---|
| FDIC Financial Institution Letters | fdic_fil | 2,313 | since 1994, active and inactive indexes |
| CFTC Staff Letters (no-action, exemptive, interpretative, advisory) | cftc_staff_letter | 943 | 2008 to present |
| OCC Bulletins | occ_bulletin | 606 | since 1994 |
| OCC Interpretive Letters | occ_interpretive_letter | 448 | 1996 to present |
| Federal Reserve SR and CA Letters | frb_sr_letter | 336 | since 1990 |
| FinCEN Guidance (alerts, advisories, notices, bulletins, fact sheets) | fincen_guidance | 127 | rolling |
| FinCEN Administrative Rulings | fincen_ruling | 85 | since 1988 |
Labor
| Source | source code | Docs | Window |
|---|---|---|---|
| NLRB Division of Advice Memoranda | nlrb_advice_memo | 339 | rolling 10-year window, not the full archive |
| NLRB General Counsel Memoranda | nlrb_gc_memo | 300 | 1973 to present |
Immigration
| Source | source code | Docs | Citation form |
|---|---|---|---|
| USCIS Policy Manual | uscis_policy_manual | 456 chapters across 12 volumes | USCIS Policy Manual, Vol. 12, Pt. D, Ch. 3 |
Intellectual property
| Source | source code | Docs | Citation form |
|---|---|---|---|
| USPTO Trademark Manual of Examining Procedure | tmep | 2,109 sections, 19 chapters | TMEP 1207.01 |
| USPTO Manual of Patent Examining Procedure | mpep | 2,024 sections, 29 chapters | MPEP 2106 |
| US Copyright Office Circulars | copyright_circular | 58 circulars, 704 passages | Circular number |
Antitrust and criminal enforcement
| Source | source code | Docs | Citation form |
|---|---|---|---|
| DOJ Justice Manual | doj_justice_manual | 1,548 sections across 9 Titles | Justice Manual 9-27.420 |
| DOJ and FTC Merger Guidelines | merger_guidelines | 1 document, 128 passages | 2023 Merger Guidelines |
| DOJ Antitrust Division Leniency Policy | doj_leniency | 1 document, 8 passages | Leniency Policy |
Export control
| Source | source code | Docs | Window |
|---|---|---|---|
| DDTC Commodity Jurisdiction Determinations (ITAR USML vs EAR) | ddtc_commodity_jurisdiction | 5,903 | 2010 to present, from DDTC's own XLSX export |
| BIS Advisory Opinions (EAR) | bis_advisory_opinion | 33 | 2003 to 2023, frozen |
| DDTC Guidance | ddtc_guidance | 7 | rolling |
Health privacy
| Source | source code | Docs | Note |
|---|---|---|---|
| HHS OCR HIPAA FAQs | hhs_ocr_hipaa_faq | 444 | deduped from HHS cross-listed topic pages |
| HHS OCR resolution agreements and civil money penalties | hhs_ocr_resolution_agreement | 144 | enforcement outcomes |
| HHS OCR HIPAA guidance | hhs_ocr_hipaa_guidance | 44 | guidance materials |
Energy and communications
| Source | source code | Docs | Window |
|---|---|---|---|
| FCC Declaratory Rulings | fcc_declaratory_ruling | 172 | rolling |
| DOE Appliance Standards Guidance and FAQs | doe_appliance_guidance | 60 | draft guidance excluded |
| FERC Policy Statements | ferc_policy_statement | 45 statements, 2,698 passages | since 1996 |
Consumer safety
| Source | source code | Docs | Window |
|---|---|---|---|
| CPSC OGC Advisory Opinions | cpsc_advisory_opinion | 139 | 1973 to 2012, frozen historical archive |
| CPSC Small Entity Compliance Guides | cpsc_secg | 34 | rolling |
Benefits
| Source | source code | Docs | Note |
|---|---|---|---|
| Social Security Administration Rulings | ssa_ruling | 1,115 | SSRs and acquiescence rulings |
Federal procurement
| Source | source code | Docs | Citation form |
|---|---|---|---|
| DFARS Procurement Guidance and Information | dfars_pgi | 397 docs across 47 Parts | PGI 225.370 |
Each family gets its own deep dive elsewhere in this series, with the citation forms, the quirks, and a worked query per source: IRS revenue rulings and notices, the banking and AML letter families across the OCC, FDIC, the Federal Reserve and FinCEN, MPEP and TMEP for patent and trademark work, the USCIS Policy Manual, the NLRB memoranda, export-control determinations from BIS and DDTC, HHS OCR HIPAA material, the DOJ Justice Manual and the merger guidelines, and the long-tail regulators at CFTC, FCC, FERC, DOE and CPSC. This post is the map; those are the territory.
FERC Policy Statements are FERC's generally-applicable interpretive vehicle. They are deliberately narrower than the docket-based eLibrary universe of case-specific orders, which is a different problem with a different shape.
One token, 34 codes: why the API is built this way
The design decision that matters to you is boring and load-bearing. All 34 sources sit behind one corpusType value, and you split them with source. Every token is listed in the corpus types reference.
The alternative was a token per source: corpusType=MPEP, corpusType=JUSTICE_MANUAL, corpusType=OCC_BULLETIN. That is worse in a specific way. Every new source becomes a vocabulary item your integration must learn and your enum must widen.
With one token, adding the 35th source is a registry entry. Existing integrations that query corpusType=AGENCY_GUIDANCE pick it up on the next call with no code change. Integrations that pin a source list keep working exactly as before.
Search everything, then narrow. A call with no source filter searches all 34. Read source off the results to see which families answered, then pin the ones you want.
curl -s -X POST https://api.vaquill.ai/api/v1/us/statutes/search \
-H "Authorization: Bearer vq_key_..." \
-H "Content-Type: application/json" \
-d '{
"query": "evaluating a corporate compliance program when charging a business organization",
"corpusType": "AGENCY_GUIDANCE",
"limit": 5
}'
Real results from that exact call:
actId | Citation | Title | source | Score |
|---|---|---|---|---|
JM_S9-28.800 | Justice Manual 9-28.800 | Corporate Compliance Programs | doj_justice_manual | 0.906 |
JM_S9-28.300 | Justice Manual 9-28.300 | Factors to Be Considered | doj_justice_manual | 0.836 |
JM_S9-28.1000 | Justice Manual 9-28.1000 | Restitution and Remediation | doj_justice_manual | 0.805 |
JM_S9-47.120 | Justice Manual 9-47.120 | Criminal Division Corporate Enforcement and Voluntary Self-Disclosure Policy | doj_justice_manual | 0.754 |
JM_S9-28.500 | Justice Manual 9-28.500 | Pervasiveness of Wrongdoing Within the Corporation | doj_justice_manual | 0.734 |
Each of those carries externalUrl pointing at justice.gov, and a displayPath that reads DOJ Justice Manual / Title 9: Criminal / 9-28.000 - Principles of Federal Prosecution Of Business Organizations. You can render a breadcrumb without a second call.
The 422 that documents itself
Filters fail loud. Pass a source value that does not exist and you get a 422 with the full valid set, not an empty result page that looks like a coverage gap. The error reference covers the other failure shapes.
Here is a real request with a plausible-looking typo (irs_rev_ruling instead of irs_rev_rul):
{
"query": "guidance",
"corpusType": "AGENCY_GUIDANCE",
"source": "irs_rev_ruling",
"limit": 1
}
And the response, HTTP 422, abridged in the middle:
{
"detail": "Invalid request parameters",
"errors": [{
"loc": ["body", "source"],
"msg": "Value error, Unknown `source` value(s) ['irs_rev_ruling']. Expected one of: `administrative_guidance` (Synthesized administrative guidance (e.g. SALT cap, CTC, 401(k) limits)), `bis_advisory_opinion` (BIS (Bureau of Industry and Security) Advisory Opinions), `cftc_staff_letter` (CFTC Staff Letters (no-action, exemptive, interpretative; 2008-present)), ... `nlrb_advice_memo` (NLRB Division of Advice Memoranda (rolling 10-year window, not the full archive)), ... `uscis_policy_manual` (USCIS Policy Manual)"
}]
}
Two things worth noticing. The message carries the human label alongside every code, so you can build a source picker straight from an error response. And the coverage caveats live in the label itself. The rolling 10-year window on NLRB advice memoranda is in the API's own error text.
The source filter is shared across corpora, so the valid set also includes codes that belong to other corpusType values: far and dfars under CFR, frcp and fre and sct under FEDERAL_RULES, state_insurance_bulletin under STATE_AGENCY_GUIDANCE. Passing a valid code that belongs to a different corpus returns zero results rather than an error, so keep corpusType and source consistent.
Failed calls are not charged. A 422 costs you nothing, which makes it safe to probe the filter during development.
The parts that are frozen, and why we say so
Three coverage facts belong in your runbook, because they will look like bugs otherwise.
CPSC OGC advisory opinions run 1973 to 2012. Those 139 documents are a historical archive. A pipeline that expects a new one will wait forever.
BIS advisory opinions run 2003 to 2023. Same shape, different agency: 33 documents, not growing on a schedule you can rely on.
NLRB Division of Advice Memoranda hold a rolling 10-year window. This one is the trap, because it looks complete. It is not the full archive, and a memo from 2008 that you saw cited in a brief will not be in the corpus. NLRB General Counsel Memoranda, by contrast, do go back to 1973.
What this corpus is scoped to
Being clear about the edges is more useful than a feature list.
Versioning here is the amendment record, not a date parameter. A citation resolves to exactly one text, the current one, and nothing rewinds it: no as_of=2019-06-01 reconstructs what MPEP 2106 said before a revision. What exists instead is amendment history where the publisher prints it, a lastAmendedYear per section, a yearFrom and yearTo currency filter, and per-item change diffs on watched sources, a boundary we lay out in full. If your use case is historical reconstruction of superseded guidance, this is the wrong tool and you should know that before you build on it.
Guidance is not the rule. Cross-reference fields point you at the CFR parts and USC sections a document interprets. Follow them. An answer that cites only guidance is an answer that cites only what the agency thinks.
Wiring it into a compliance pipeline
The refresh cadence is weekly. That sets the shape of a sane integration.
- Pin your sources. Send
sourceas a list of the codes your product actually cares about. A HIPAA product wants three codes; a bank supervision product wants seven; a patent product wants one. - Store
actId, not your own key. Ids are stable across refreshes. Titles and page paths are not. - Keep
externalUrlin your record. It is the publisher's own copy, which is what a reviewer will ask for when they challenge an answer. - Watch what changes rather than diffing everything.
GET /boardscosts nothing and enumerates every watchable source, each row carrying itscadence, itslastRetrievedAt, and itsretrievalStatus. Subscribe a watch and read per-item diffs instead of re-crawling 21,906 documents every week. See Law Change Alerts and how we know a law changed for that path. - Alert on a stalled board, not on a quiet week. A frozen archive produces no changes by design. A board whose
lastRetrievedAthas not moved is the real signal.
Sourcing is a hard rule rather than a preference: every document comes from the issuing agency's own site, never from a commercial aggregator, not even as a fallback. Where an agency stops publishing, the corpus carries the gap and declares it. The pipeline is open source at open-us-law, so the parsers are auditable.
FAQ
Is federal agency guidance binding law?
No. Sub-regulatory guidance is issued without notice-and-comment rulemaking, so it does not carry the force of law the way a statute or a codified final rule does. Courts treat it as persuasive at best. It still drives most enforcement, examination, and adjudication outcomes, which is why compliance programs that ignore it fail.
What is the difference between the CFR and agency guidance?
The CFR holds legislative rules that went through notice-and-comment and bind regulated parties. Agency guidance explains what those rules mean and how the agency will apply them. They are separate corpora with separate corpusType tokens, and a complete answer usually needs both.
How many documents are in the federal agency guidance corpus?
21,906 documents across 34 named sources, measured 2026-08-30. Long documents split into multiple retrieval passages, so a passage count runs higher: the 45 FERC policy statements, for example, index as 2,698 passages.
Can I search only IRS guidance?
Yes. Pass corpusType=AGENCY_GUIDANCE with source set to one or more of irs_rev_proc, irs_rev_rul, irs_notice, or irs_announcement. That family holds 1,469 documents covering 2015 to present. Older revenue rulings are outside the current window.
Why do I get a 422 instead of zero results for a bad filter?
Because a zero-result page looks identical to a real coverage gap, and that ambiguity ships bugs. Unknown filter values are rejected with a 422 whose message lists every valid code with a label. Failed calls are not charged, so probing the filter is free.
Does the corpus include historical versions of a guidance document?
Versioning here runs off the amendment record rather than a date parameter. Each citation carries its current text only, and no as_of parameter exists to ask for an earlier one. What exists is amendment history where the publisher prints it, a last-amended year per item, a yearFrom and yearTo currency filter, and per-item change diffs on watched sources going forward.
Which agency guidance sources are no longer updated?
CPSC Office of General Counsel advisory opinions (1973 to 2012) and BIS advisory opinions (2003 to 2023) are historical archives that do not grow. NLRB Division of Advice Memoranda hold a rolling 10-year window rather than the full archive. Everything else refreshes weekly.
Can I use this through MCP instead of REST?
Yes. The same surface is published as an MCP server at mcp.vaquill.ai using the same vq_key_ credential, so an agent can call the corpus as a tool. See adding legal research to an AI agent over MCP for the wiring.
What does a search cost?
A search is 4 credits and returns up to 50 results per page, with paging cut from a single ranking so a later page costs no more than the first. The coverage and boards endpoints are free. Pricing details are in the credits explainer.
Where to start
If you are indexing federal compliance material, start with GET /us/statutes/coverage, read the corpusTypes array, and pin the source codes your product needs. That call is free and it reports what exists today.
Vaquill AI serves this corpus alongside the CFR, the Federal Register, the US Code, and all 52 state statutory jurisdictions behind one key. Scope it to what guidance is for: what an agency says its rules mean today, with the publisher's own URL on every result.
New legal AI guides, weekly.
Further Reading
The Long-Tail Regulators: CFTC, FCC, FERC, DOE, and CPSC Guidance in One API
Read postDOJ Justice Manual API: 1,548 Sections of Federal Prosecution Policy
Read postExport Controls API: BIS Advisory Opinions and DDTC Commodity Jurisdiction Determinations
Read postHIPAA Guidance API: HHS OCR FAQs, Guidance, and Enforcement Actions
Read postNLRB Memoranda API: General Counsel and Division of Advice Memos, Queryable
Read postUSCIS Policy Manual API: 456 Chapters of Immigration Guidance, Queryable by Volume
Read post
Co-Founder & CTO
Priyansh leads engineering and AI at Vaquill, from the matter workbench to drafting, document comparison, document matrix, and citation-verified research.