canonical: https://jentic.com/apis/epa.gov/epa-gov

# Epa Gov U.S. EPA Enforcement and Compliance History Online (ECHO) - Clean Air Act

Jentic publishes the only available OpenAPI specification for U.S. EPA Enforcement and Compliance History Online (ECHO) - Clean Air Act, keeping it validated and agent-ready. ECHO Air Rest Services exposes 16 endpoints over the EPA's ICIS-Air database, covering more than one million regulated facilities under the Clean Air Act. The recommended flow is to call get_facilities first to validate query parameters and retrieve a query ID (QID) valid for about 30 minutes, then page results with get_qid, retrieve clustered map coordinates with get_map, and pull a CSV with get_download. The enhanced get_facility_info endpoint is self-contained and returns either clusters by state, county, or zip or an array of facilities directly.

## For AI agents

Search U.S. facilities regulated under the Clean Air Act and pull compliance, enforcement, and emissions history from EPA's ICIS-Air database. No authentication required.

## Scope

Does not handle Clean Water Act, RCRA, or Safe Drinking Water Act records, and does not submit compliance filings - use for read-only Clean Air Act facility lookups only.

## Capabilities

- Search Clean Air Act facilities by state, county, zip, SIC, or custom query parameters
- Generate a 30-minute query ID for paginating large facility result sets
- Retrieve clustered facility coordinates for rendering map overlays at any zoom level
- Export matching facilities as a CSV download via the get_download endpoint
- Pull GeoJSON of facility locations for direct ingestion into mapping libraries
- Inspect column metadata to customise output objects via the qcolumns parameter
- Return cluster-level summary statistics by state, county, or zip

## Use cases

### Environmental Due Diligence on Real Estate or M&A Targets

Investors and ESG analysts need to surface Clean Air Act compliance history for sites tied to a transaction. ECHO's get_facilities and get_facility_info endpoints return facility-level enforcement history, current compliance status, and pollutant emissions for any U.S. zip code or county, so an agent can attach an environmental risk summary to a deal memo automatically.

Example prompt: Call GET /air_rest_services.get_facility_info with p_zip=94105 and return any facility with current_significant_violations greater than 0.

### Building a Map of Regulated Facilities for a Region

GIS teams and journalists rendering interactive maps of pollution sources need clustered coordinates that scale across zoom levels. The get_qid plus get_map plus get_geojson combination returns clusters for low zoom and individual facility points for high zoom, so an agent can drive a Leaflet or Mapbox layer in real time.

Example prompt: Call GET /air_rest_services.get_facilities with p_st=NY, take the returned QID, then call GET /air_rest_services.get_geojson with that QID and pass the response to a map renderer.

### Bulk Compliance Reporting for an Industrial Portfolio

Sustainability teams overseeing an industrial portfolio need periodic CSV exports of compliance status across hundreds of sites. The QID then get_download flow produces a Comma Separated Values file matching the original query, so a scheduled agent can refresh a quarterly compliance report without manual exports from echo.epa.gov.

Example prompt: Call GET /air_rest_services.get_facilities for the user's facility list, then GET /air_rest_services.get_download with the returned QID to retrieve the CSV.

### AI Agent Environmental Compliance Tool via Jentic

An ESG copilot agent can be wired through Jentic to answer 'is this address a regulated emitter?' on demand. The agent searches for the get_facility_info operation, loads its schema, and executes a parameterised query using only the user's address. Because no API key is required, the credential layer is trivial and the only state the agent tracks is the QID lifecycle.

Example prompt: Use Jentic search('search clean air act facilities by zip'), load the get_facility_info operation, and execute it for p_zip=10001 to return the facility list.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /air_rest_services.get_facilities | Search facilities and obtain a QID |
| GET | /air_rest_services.get_facility_info | Self-contained facility search returning clusters or facilities |
| GET | /air_rest_services.get_qid | Paginate facility results by QID |
| GET | /air_rest_services.get_map | Retrieve map clusters and points by QID |
| GET | /air_rest_services.get_download | Download CSV of QID results |
| GET | /air_rest_services.get_geojson | Return facilities as GeoJSON |
| GET | /air_rest_services.metadata | List available output columns and definitions |

## Key resources

- **Facilities** — Search and paginate over CAA-regulated facilities
- **Query ID (QID)** — 30-minute handle used to chain get_qid, get_map, and get_download calls
- **Map** — Cluster and individual point coordinates for map rendering
- **Download** — CSV export of facility query results
- **GeoJSON** — GeoJSON FeatureCollection of facility locations
- **Metadata** — Column definitions and IDs for customising output objects

## Why Jentic

- **Setup:** Wiring the EPA ECHO Clean Air Act API by hand means learning its two-step QID workflow, where a query returns an id you then pass to the download and map calls, and building your own retries against echodata.epa.gov. Through Jentic you install once, import this ECHO API from the API Directory, and your agent calls it with no key to manage.
- **Permission scoping:** ECHO is a read-only public API, so scope the agent to the operations it needs, such as get_facilities or get_facility_info. You pick that allowed set, so an operation like get_download or get_geojson is only reachable if you include it.
- **Credential handling:** The ECHO API requires no key, so there is no secret to store or expose; nothing about the call enters the agent's prompt, logs, or context beyond the operation inputs you provide.
- **Discovery method:** Agents search Jentic by intent such as 'search clean air act facilities by zip' or 'download a facility csv', and Jentic returns the matching operation with its input schema so the agent calls the right endpoint without learning the QID workflow.

## Related APIs

- **USDA ARMS Data API** — Federal agriculture data - pairs with EPA facility data for environmental impact studies
- **EODHD Financial Data API** — Equity fundamentals and ESG flags - combine with EPA enforcement records to score a company's environmental risk
- **Escrow.com API** — Escrow payments for asset transfers - useful in environmental remediation deals

## FAQ

### Why is there no official OpenAPI spec for the EPA ECHO Clean Air Act API?

EPA publishes WSDL-style documentation but not an OpenAPI specification for ECHO Air Rest Services. Jentic generates and maintains this spec so that AI agents and developers can call the EPA ECHO Clean Air Act API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the EPA ECHO Clean Air Act API use?

The API has no authentication; it is a public service of the U.S. EPA. Through Jentic no credentials are stored, and rate-limit-friendly request shaping is handled by the platform.

### Can I get a CSV export of facilities through the EPA ECHO Clean Air Act API?

Yes. Run GET /air_rest_services.get_facilities to obtain a QID, then call GET /air_rest_services.get_download with that QID within 30 minutes to receive the CSV.

### What are the rate limits for the EPA ECHO Clean Air Act API?

EPA does not publish a hard quota, but recommends throttling parallel requests and reusing QIDs rather than re-querying. The QID itself expires after roughly 30 minutes.

### How do I find facilities near an address through Jentic?

Search 'search clean air act facilities by zip'. Jentic returns the GET /air_rest_services.get_facility_info operation, you load its schema, and execute with p_zip set to the target zip code to receive the facility list.

### How long is a query ID (QID) valid for?

QIDs are valid for approximately 30 minutes. After that, re-run get_facilities with the same parameters to obtain a fresh QID before calling get_qid, get_map, or get_download.

### Is the EPA ECHO Clean Air Act API free?

Yes. ECHO is a public-domain service maintained by the EPA's Office of Enforcement and Compliance Assurance and is free to use without registration.

### Can I limit what my agent is allowed to do with the EPA ECHO Clean Air Act API?

Yes. Because you run Jentic One self-hosted, your own rules decide which ECHO operations the agent may call, and it can only reach the ones you include. For a read-only lookup agent you might allow only get_facilities and get_facility_info while withholding get_download and get_geojson, so the agent can search Clean Air Act facilities but cannot pull CSV exports or GeoJSON. Since ECHO needs no API key, the only thing you scope is the set of allowed operations and their inputs.
