---
title: "Returns EPA federal CIVIL enforcement cases from ICIS FE&C (the EPA's Integrated Compliance Information System) via the ECHO bulk download — ~135K cases, EPA-lead administrative and judicial civil actions"
method: GET
path: "/v1/epa-enforcement"
---

# Returns EPA federal CIVIL enforcement cases from ICIS FE&C (the EPA's Integrated Compliance Information System) via the ECHO bulk download — ~135K cases, EPA-lead administrative and judicial civil actions

`GET /v1/epa-enforcement`

## Request

- Base URL: `https://api.keyvex.com`
- URL: `https://api.keyvex.com/v1/epa-enforcement`
- Auth: API key in header `x-api-key`

Returns EPA federal CIVIL enforcement cases from ICIS FE&C (the EPA's Integrated Compliance Information System) via the ECHO bulk download — ~135K cases, EPA-lead administrative and judicial civil actions. CRIMINAL prosecutions are NOT in this source, and neither are state-lead actions. Refreshed weekly by EPA (~Saturday).  Use this when the user asks about: EPA fines / penalties against a company, Clean Air Act / Clean Water Act / RCRA / Superfund enforcement, environmental violations by facility or state, settlements and consent decrees, or supplemental environmental projects (SEPs).  Record shape (one doc per case, joins pre-flattened): case_number (RR-YYYY-NNNN), case_name, defendants[] (names), statutes[] + primary_statute (CWA, CAA, FIFRA, SDWA, RCRA, TSCA, CERCLA, EPCRA), activity_type ('administrative' | 'judicial'), activity_status + status_date, penalties from the CASE_PENALTIES table — fed_penalty, state_local_penalty, sep_amount, compliance_action_cost, cost recoveries, penalty_collected — settlement_lodged_date (earliest; only ~34% of cases lodge, mostly judicial) + settlement_entered_date (latest) + settlements_count, facilities[] (name, city, state, NAICS, FRS registry ID), region_code, doj_docket_number, enf_outcome, voluntary_self_disclosure, multimedia, summary_text, and source_url (the ECHO case report page).  Date filters (since/until) and the default sort use status_date — the case's last status-change date, present on every case. Sorting by fed_penalty cannot be combined with since/until (numeric field).  Cross-source: pair with get_enforcement_actions (press-release actions from 8 other regulators), get_federal_contracts (whether an EPA defendant still wins federal awards), and get_material_events (8-K environmental-liability disclosures).  Pure-publisher posture: EPA's case records as published — no derived severity scores or compliance opinions.

## Query parameters

- `case_number` string
- `defendant_name` string
- `state` string
- `primary_statute` string
- `activity_type` 'administrative' | 'judicial'
- `min_penalty` number
- `fiscal_year` integer
- `since` string
- `until` string
- `sort_by` 'status_date' | 'fed_penalty'
- `sort_order` 'asc' | 'desc'
- `limit` integer

## Response `200`

JSON envelope: { results: [...], count, has_more }.

## Other responses

- `400`: Invalid parameter.
- `401`: Missing or invalid API key.
- `402`: This tool requires a higher plan (upgrade_required). Retrying will not help.
- `429`: Tier rate/quota limit reached (rate_limited). Retry-After points at the reset.

---

[API](https://skmtc.dev/keyvex/apis/keyvex-api.md) · [All operations](https://skmtc.dev/keyvex/apis/keyvex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/keyvex/apis/keyvex-api/revisions/01c0210c19cd?raw)
