API reference

CiteRegs provides verified federal compliance data for AI agents, with core coverage across OSHA, EPA, MSHA, DOT hazmat, and FDA. Every response carries its source and the date it was verified. The examples below use OSHA data.

Authentication

Every request must include your API key in the x-api-key header. Find your key on the dashboard.

header
x-api-key: YOUR_KEY

Each successful call counts toward your monthly plan limit. All responses are JSON and include source, source_url and verified.

Coverage

What the API contains today — 2,114 sections:

  • OSHA (29 CFR): Part 1910 priority sections (68 sections, including every general-industry standard in OSHA's FY2025 Top 10) and Part 1926 complete (304 sections)
  • EPA (40 CFR): Parts 112, 302, 355, 370, 372, 761 (197 sections)
  • MSHA (30 CFR): Parts 46, 47, 50, 56, 57, 62 (1,098 sections)
  • DOT hazmat (49 CFR): Parts 171, 172, 173 (386 sections)
  • FDA (21 CFR): Part 117 (61 sections)

If a section isn't listed here, the API returns 404. Coverage expands over time. The penalties and most-cited datasets cover OSHA.

GET

/api/v1/standards/:section

Returns regulatory text by section number. The OSHA example below uses 29 CFR 1910.212; sections not in the loaded dataset return 404.

curl
curl https://citeregs.com/api/v1/standards/1910.212 \
  -H "x-api-key: YOUR_KEY"
200 response
{
  "citation": "29 CFR 1910.212",
  "title": "General requirements for all machines.",
  "paragraphs": [
    "(a) Machine guarding - (1) Types of guarding. One or more methods of machine guarding shall be provided to protect the operator and other employees in the machine area from hazards such as those created by point of operation, ingoing nip points, rotating parts, flying chips and sparks."
  ],
  "source": "Electronic Code of Federal Regulations (eCFR), Title 29",
  "source_url": "https://www.ecfr.gov/current/title-29/part-1910/section-1910.212",
  "verified": "2026-10-30"
}
GET

/api/v1/penalties/current

Returns the current OSHA civil penalty table.

curl
curl https://citeregs.com/api/v1/penalties/current \
  -H "x-api-key: YOUR_KEY"
200 response
{
  "year": 2026,
  "penalties": [
    { "type": "Willful", "minimum_per_violation": 11823, "maximum_per_violation": 165514 },
    { "type": "Repeat", "minimum_per_violation": 4256, "maximum_per_violation": 165514 },
    { "type": "Serious", "minimum_per_violation": 1085, "maximum_per_violation": 16550 },
    { "type": "Other-than-serious", "minimum_per_violation": 0, "maximum_per_violation": 16550 },
    { "type": "Posting requirements", "minimum_per_violation": 0, "maximum_per_violation": 16550 },
    { "type": "Failure to abate", "maximum_per_day_unabated": 16550, "note": "Per day beyond the abatement date, generally limited to 30 days maximum." }
  ],
  "note": "No inflation adjustment for 2026; 2025 amounts remain in effect.",
  "source": "OSHA memorandum, 2026 Annual Adjustments to OSHA Civil Penalties, May 21, 2026",
  "source_url": "https://www.osha.gov/memos/2026-05-21/2026-annual-adjustments-osha-civil-penalties",
  "verified": "2026-10-30"
}
GET

/api/v1/most-cited

Returns OSHA's most frequently cited standards for the latest fiscal year.

curl
curl https://citeregs.com/api/v1/most-cited \
  -H "x-api-key: YOUR_KEY"
200 response
{
  "fiscal_year": 2025,
  "period": "October 1, 2024 - September 30, 2025",
  "list": [
    { "rank": 1, "standard": "1926.501", "name": "Fall Protection - General Requirements", "violations": 6992 },
    { "rank": 2, "standard": "1910.1200", "name": "Hazard Communication", "violations": 3010 },
    { "rank": 3, "standard": "1926.1053", "name": "Ladders", "violations": 2842 },
    "... ranks 4-10"
  ],
  "source": "OSHA final Top 10 data for FY 2025 (Safety+Health Magazine, April 29, 2026)",
  "source_url": "https://www.safetyandhealthmagazine.com/osha-reveals-final-top-10-data-for-fy-2025/",
  "verified": "2026-10-30"
}

Errors

401unauthorizedMissing, invalid or revoked x-api-key.
404not_foundUnknown section number.
429rate_limitedMonthly call limit for your plan reached.
401 response
{
  "error": "unauthorized",
  "message": "Missing or invalid x-api-key header."
}