EEOC Guidance API: Enforcement and Policy Guidance as Structured JSON

The Equal Employment Opportunity Commission publishes its reading of the statutes it enforces as enforcement guidance, Compliance Manual sections, technical assistance documents and question-and-answer documents. Vaquill AI's US primary law API serves that set under corpusType=AGENCY_GUIDANCE with source=eeoc_guidance. The registry records 179 documents across 4,990 retrieval passages, covering 1970 to 2024, measured per source on 2026-09-06. This post sets out what the source holds, what the API returns for each document, and the one currency signal EEOC actually publishes.

TL;DR

  • One filter reaches the set. corpusType=AGENCY_GUIDANCE plus source=eeoc_guidance. The source code is in the deployed OpenAPI enum at https://api.vaquill.ai/external/openapi.json, described there as "EEOC Enforcement and Policy Guidance, including Compliance Manual sections".
  • 179 documents, 4,990 retrieval passages, 1970 to 2024, per the agency guidance source registry as measured on 2026-09-06.
  • This material is sub-regulatory. It is the Commission's interpretation of Title VII, the ADA, the ADEA, the Rehabilitation Act, GINA and the Equal Pay Act. It is not a legislative rule and does not carry the force of one, and courts weigh it by how persuasive they find it rather than deferring to it.
  • Seven documents are marked dead and they are retrievable. A live actStatus: ["superseded", "rescinded"] query returns exactly 7 results, 6 superseded and 1 rescinded, each with goodLawStatus: "not_good_law".
  • That marking comes from EEOC's own banner and nothing else. good_law on the other documents means EEOC has not announced a retirement on the document itself. It is not an assertion that the Commission still relies on it.
  • The word "Rescinded" on EEOC's hub page is not a status. It appears there 25 times as a filing instruction about a neighboring Compliance Manual section, in the form "Appears after Rescinded 604".
  • Every result carries externalUrl, the eeoc.gov page the document was taken from, so a reader can confirm status at the publisher.

Part of our federal agency guidance series.

For related coverage, see Federal Agency Guidance API for the corpus this source sits in, NLRB Memoranda API for the other federal employment-enforcement guidance set, Legal Data Provenance for how to test where any of it came from, and Amendment History and Point-in-Time Law for what versioning does and does not do here.

What the source holds

FieldValue
corpusTypeAGENCY_GUIDANCE
sourceeeoc_guidance
Documents179
Retrieval passages4,990
Coverage1970 to 2024
Document kindsEnforcement guidance, policy guidance, Compliance Manual sections, technical assistance documents, question-and-answer documents
Citation formEEOC-NVTA-2001-1
Refresh cadenceWeekly, per the agency_guidance entry on GET /boards
Publishereeoc.gov, carried on each result as externalUrl

Document and passage counts are the per-source measurement published in the agency guidance registry on 2026-09-06. That page carries its own caveat: the per-source column sums higher than the corpus total GET /us/statutes/coverage reports, so read a single row as an upper bound and take the endpoint as authoritative for a total.

The corpus it sits inside

Figure
AGENCY_GUIDANCE documents81,451
Named sources under that token51
Agencies represented26
Total sections across all US corpora4,983,685

Those four are read from GET /api/v1/us/statutes/coverage, which costs nothing to call. The source filter is what keeps an EEOC query out of the other 50 sources.

The statutes behind the documents

Documents are counted by the authority each one cites, and a single document commonly cites more than one, so these do not sum to 179.

AuthorityDocuments citing it
Title VII of the Civil Rights Act of 196498
Americans with Disabilities Act92
Rehabilitation Act70
Age Discrimination in Employment Act45
Genetic Information Nondiscrimination Act32
Equal Pay Act27

Where guidance sits relative to the law

Loading diagram...

EEOC guidance is the Commission's interpretation of the statutes it enforces, not those statutes and not a legislative rule. It does not carry the force of a regulation, and a court gives it respect according to how persuasive it finds it rather than deferring to it. Render it in your product as the agency's stated position, and cite the statute or the regulation for the requirement itself.

Currency: the one signal EEOC publishes

EEOC marks a retired document with a banner on the document itself. That banner is the only machine-readable retirement record the Commission publishes; /rescinded-guidance, /withdrawn-guidance and /laws/guidance/rescinded all return 404.

The API carries that banner as actStatus on each result, and derives goodLawStatus from it.

curl -s https://api.vaquill.ai/api/v1/us/statutes/search \
  -H "Authorization: Bearer vq_key_..." \
  -H "Content-Type: application/json" \
  -d '{
    "query": "guidance",
    "corpusType": "AGENCY_GUIDANCE",
    "source": "eeoc_guidance",
    "actStatus": ["superseded", "rescinded"],
    "limit": 25
  }'

That call returns 7 results, live on 2026-09-07.

citationactStatusgoodLawStatusYear
EEOC-CVG-1987-8supersedednot_good_law1987
EEOC-CVG-1990-5supersedednot_good_law1990
EEOC-CVG-1990-8supersedednot_good_law1990
EEOC-CVG-1994-5supersedednot_good_law1994
EEOC-CVG-1999-2supersedednot_good_law1999
EEOC-NVTA-1999-2supersedednot_good_law1999
EEOC Enforcement Guidance on the Effect of Representations Made in Applications for Benefitsrescindednot_good_lawnone printed

Six superseded and one rescinded, against 172 that carry no EEOC retirement banner. The dead documents stay retrievable rather than being deleted, which is what a compliance diff asking what was lost actually needs.

A worked query

Base URL is https://api.vaquill.ai/api/v1. Auth is a bearer key with a vq_key_ prefix, and statutes routes are mounted under /us/statutes/*.

curl -s https://api.vaquill.ai/api/v1/us/statutes/search \
  -H "Authorization: Bearer vq_key_..." \
  -H "Content-Type: application/json" \
  -d '{
    "query": "reasonable accommodation undue hardship",
    "corpusType": "AGENCY_GUIDANCE",
    "source": "eeoc_guidance",
    "limit": 5,
    "excerptChars": 600
  }'

The top hit on 2026-09-07:

{
  "actId": "EEOC_GUIDANCE_TECHNICAL_ASSISTANCE_MANUAL_EMPLOYMENT_PROVISIONS_TITLE_I_AMERICANS_DISABILITIES_ACT",
  "citation": "EEOC-NVTA-1992-2",
  "title": "A Technical Assistance Manual on the Employment Provisions (Title I) of the Americans with Disabilities Act",
  "corpusType": "AGENCY_GUIDANCE",
  "source": "eeoc_guidance",
  "year": 1992,
  "actStatus": "in_force",
  "goodLawStatus": "good_law",
  "effectiveDate": "1992-01-01",
  "wordCount": 50240,
  "externalUrl": "https://www.eeoc.gov/laws/guidance/technical-assistance-manual-employment-provisions-title-i-americans-disabilities-act"
}

Take the actId from the response and fetch the full document with GET /us/statutes/section/{actId} or /section/{actId}/body.

Filters that matter for this source

ParamUse it for
corpusTypePin to AGENCY_GUIDANCE, or pass a list to search guidance alongside CFR
sourceeeoc_guidance, or a list to search it beside nlrb_gc_memo and whd_opinion_letter
actStatusPositively scope to superseded or rescinded to find what was retired
excludeRepealedDrop the documents whose own status says they are no longer operative
matchTypeany for hybrid ranking, all for strict keyword, phrase for a defined term
yearFrom / yearToBound by the version year of a document
changedSinceOnly documents we have observed change on since a date
limit / offsetPaging is cut from one ranking, so results do not repeat between pages

An unknown filter value returns 422 rather than silently matching nothing, and the source filter's error message lists every valid code.

Identifiers and citation

actId is the eeoc.gov URL slug, deliberately not EEOC's OLC control number. 178 of the 179 documents print a control number, and those 178 numbers hold only 177 distinct values, because EEOC-NVTA-2016-3 is printed on two unrelated documents. The control number is carried as metadata and surfaces as citation, and the URL slug is what makes the identifier unique.

How the set is enumerated

The enumeration is EEOC's own sitemap filtered to /laws/guidance/, which yields all 179 documents.

EEOC's /eeoc-guidance hub page renders only 56 of them and offers no pager. Those 56 are a strict subset of the 179, so a crawl of the hub would ship under a third of the source and report success. That is the sort of thing a coverage table never shows, which is why the enumeration path is worth stating.

What is not in this source

  • Federal-sector appellate decisions. They are decided cases, they belong under corpusType=AGENCY_ADJUDICATION, and they are reachable only through a search path robots.txt disallows.
  • EEOC regulations. 29 C.F.R. Parts 1600 and following are regulation text and live in the CFR corpus, not here.
  • The statutes themselves. Title VII, the ADA and the ADEA are in the USC corpus.
  • Charge data, right-to-sue letters, or litigation filings. None of that is published as guidance and none of it is in this source.
  • State fair-employment agency guidance. State material sits in the state corpora, a different query.

Change monitoring

GET /boards costs nothing and returns the watchable registry. The relevant entry is corpusType: "agency_guidance", cadence weekly, label "Agency guidance (IRS/SSA)", with scopable: false.

scopable: false is the part to plan around: the board is the whole agency guidance corpus, and a watch cannot be narrowed to eeoc_guidance alone. For a per-source signal, poll changedSince on a search scoped to source=eeoc_guidance instead.

Where to go next

Full parameter reference, error shapes and the rest of the source registry are in the API overview and the agency guidance coverage page. If your build spans more than one enforcement agency, the federal agency guidance post covers the other 50 sources under the same token, and the employment tooling roundup covers the product side.

FAQ

What is EEOC guidance?

It is the Equal Employment Opportunity Commission's published interpretation of the statutes it enforces, issued as enforcement guidance, policy guidance, Compliance Manual sections, technical assistance documents and question-and-answer documents. It explains how the Commission reads Title VII, the ADA, the ADEA, the Rehabilitation Act, GINA and the Equal Pay Act. It is sub-regulatory: it is not a legislative rule and does not carry the force of one.

Is EEOC guidance binding on courts?

No. A court weighs it according to how persuasive it finds it rather than deferring to it, because it is the agency's interpretation rather than a rule adopted through notice-and-comment rulemaking. Treat it as the Commission's stated position, and cite the statute or the regulation for the requirement itself.

How many EEOC documents are in the API?

179 documents across 4,990 retrieval passages, covering 1970 to 2024, as measured per source on 2026-09-06 and published in the agency guidance registry. That registry warns that its per-source column sums higher than the corpus total GET /us/statutes/coverage reports, so read one row as an upper bound. The endpoint is authoritative for the 81,451-document AGENCY_GUIDANCE total.

Does the API tell me whether a specific EEOC document is still good law?

It tells you what EEOC's own banner says, and nothing beyond that. Seven documents carry a retirement banner and return goodLawStatus: "not_good_law", six superseded and one rescinded. The rest return good_law, which means only that EEOC has published no retirement banner on them, not that the Commission still relies on the guidance. Every result carries externalUrl so status can be confirmed at eeoc.gov.

Are retired EEOC documents removed from the corpus?

No. They stay retrievable and are marked instead, which is what a compliance diff asking what was lost needs. Scope to them positively with actStatus: ["superseded", "rescinded"], or drop them with excludeRepealed: true.

Why should I not trust the word "Rescinded" on EEOC's hub page?

Because on that page it is a filing instruction, not a status. It appears 25 times in the hub's Compliance Manual Section column, each time describing where a neighboring manual section sits, in the form "Appears after Rescinded 604". Reading that column as a status field would retire 25 documents that EEOC has not retired.

How is an EEOC document cited, and what is its actId?

The citation form is the Commission's control number, for example EEOC-NVTA-2001-1, carried on each result as citation. The actId is the eeoc.gov URL slug rather than the control number, because 178 documents print a control number and those numbers hold only 177 distinct values. Take the actId from a search response rather than constructing one.

Can I get an alert when EEOC guidance changes?

Partly. GET /boards lists one agency_guidance board with a weekly cadence and scopable: false, so a watch covers the whole guidance corpus and cannot be narrowed to eeoc_guidance. For a source-level signal, poll changedSince on a search scoped to source=eeoc_guidance.

Are EEOC federal-sector decisions in this source?

No. Those are decided cases and belong under corpusType=AGENCY_ADJUDICATION, not under guidance. They are also reachable only through a search path EEOC's robots.txt disallows, so they are a declared gap rather than a quiet omission.

The most complete US primary law API.
Every US statute, regulation, constitution, and executive order through one REST and MCP API. 4.9M+ sections, section-level citations, and links to the official source. Plus a free open dataset.
13 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.