Federal Agency Guidance API: 34 Sub-Regulatory Sources in One Endpoint

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 corpusType token. Sources are split with the source filter, so a new source lands as a registry entry instead of a new API token your integration has to learn.
  • Pass an unknown source value 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.

A grid of eighteen federal agency logos-as-labels including OCC, FinCEN, USPTO and NLRB, representing 34 named guidance sources.

4-question check
Question 1 of 4

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.

Loading diagram...

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

Sourcesource codeDocsWindow
IRS Revenue Procedures, Revenue Rulings, Notices, Announcementsirs_rev_proc, irs_rev_rul, irs_notice, irs_announcement1,469 combined2015 to present
Synthesized administrative guidance (SALT cap, CTC, 401k limits)administrative_guidancesee noterolling

Banking, markets, and AML

Sourcesource codeDocsWindow
FDIC Financial Institution Lettersfdic_fil2,313since 1994, active and inactive indexes
CFTC Staff Letters (no-action, exemptive, interpretative, advisory)cftc_staff_letter9432008 to present
OCC Bulletinsocc_bulletin606since 1994
OCC Interpretive Lettersocc_interpretive_letter4481996 to present
Federal Reserve SR and CA Lettersfrb_sr_letter336since 1990
FinCEN Guidance (alerts, advisories, notices, bulletins, fact sheets)fincen_guidance127rolling
FinCEN Administrative Rulingsfincen_ruling85since 1988

Labor

Sourcesource codeDocsWindow
NLRB Division of Advice Memorandanlrb_advice_memo339rolling 10-year window, not the full archive
NLRB General Counsel Memorandanlrb_gc_memo3001973 to present

Immigration

Sourcesource codeDocsCitation form
USCIS Policy Manualuscis_policy_manual456 chapters across 12 volumesUSCIS Policy Manual, Vol. 12, Pt. D, Ch. 3

Intellectual property

Sourcesource codeDocsCitation form
USPTO Trademark Manual of Examining Proceduretmep2,109 sections, 19 chaptersTMEP 1207.01
USPTO Manual of Patent Examining Procedurempep2,024 sections, 29 chaptersMPEP 2106
US Copyright Office Circularscopyright_circular58 circulars, 704 passagesCircular number

Antitrust and criminal enforcement

Sourcesource codeDocsCitation form
DOJ Justice Manualdoj_justice_manual1,548 sections across 9 TitlesJustice Manual 9-27.420
DOJ and FTC Merger Guidelinesmerger_guidelines1 document, 128 passages2023 Merger Guidelines
DOJ Antitrust Division Leniency Policydoj_leniency1 document, 8 passagesLeniency Policy

Export control

Sourcesource codeDocsWindow
DDTC Commodity Jurisdiction Determinations (ITAR USML vs EAR)ddtc_commodity_jurisdiction5,9032010 to present, from DDTC's own XLSX export
BIS Advisory Opinions (EAR)bis_advisory_opinion332003 to 2023, frozen
DDTC Guidanceddtc_guidance7rolling

Health privacy

Sourcesource codeDocsNote
HHS OCR HIPAA FAQshhs_ocr_hipaa_faq444deduped from HHS cross-listed topic pages
HHS OCR resolution agreements and civil money penaltieshhs_ocr_resolution_agreement144enforcement outcomes
HHS OCR HIPAA guidancehhs_ocr_hipaa_guidance44guidance materials

Energy and communications

Sourcesource codeDocsWindow
FCC Declaratory Rulingsfcc_declaratory_ruling172rolling
DOE Appliance Standards Guidance and FAQsdoe_appliance_guidance60draft guidance excluded
FERC Policy Statementsferc_policy_statement45 statements, 2,698 passagessince 1996

Consumer safety

Sourcesource codeDocsWindow
CPSC OGC Advisory Opinionscpsc_advisory_opinion1391973 to 2012, frozen historical archive
CPSC Small Entity Compliance Guidescpsc_secg34rolling

Benefits

Sourcesource codeDocsNote
Social Security Administration Rulingsssa_ruling1,115SSRs and acquiescence rulings

Federal procurement

Sourcesource codeDocsCitation form
DFARS Procurement Guidance and Informationdfars_pgi397 docs across 47 PartsPGI 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:

actIdCitationTitlesourceScore
JM_S9-28.800Justice Manual 9-28.800Corporate Compliance Programsdoj_justice_manual0.906
JM_S9-28.300Justice Manual 9-28.300Factors to Be Considereddoj_justice_manual0.836
JM_S9-28.1000Justice Manual 9-28.1000Restitution and Remediationdoj_justice_manual0.805
JM_S9-47.120Justice Manual 9-47.120Criminal Division Corporate Enforcement and Voluntary Self-Disclosure Policydoj_justice_manual0.754
JM_S9-28.500Justice Manual 9-28.500Pervasiveness of Wrongdoing Within the Corporationdoj_justice_manual0.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.

  1. Pin your sources. Send source as 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.
  2. Store actId, not your own key. Ids are stable across refreshes. Titles and page paths are not.
  3. Keep externalUrl in your record. It is the publisher's own copy, which is what a reviewer will ask for when they challenge an answer.
  4. Watch what changes rather than diffing everything. GET /boards costs nothing and enumerates every watchable source, each row carrying its cadence, its lastRetrievedAt, and its retrievalStatus. 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.
  5. Alert on a stalled board, not on a quiet week. A frozen archive produces no changes by design. A board whose lastRetrievedAt has 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.

The most complete US primary law API.
Every US statute, regulation, constitution, and executive order through one REST and MCP API. 4M+ sections, section-level citations, and links to the official source. Plus a free open dataset.
19 min read

New legal AI guides, weekly.

Priyansh Khodiyar

Priyansh Khodiyar

Co-Founder & CTO

Priyansh leads engineering and AI at Vaquill, from the matter workbench to drafting, document comparison, document matrix, and citation-verified research.