---
title: "Query normalized EPA ECHO ICIS-NPDES non-effluent violation rows"
method: GET
path: "/api/v1/data/environmental/epa-echo/npdes-violations"
tags: ["Permit and zoning data"]
---

# Query normalized EPA ECHO ICIS-NPDES non-effluent violation rows

`GET /api/v1/data/environmental/epa-echo/npdes-violations`

## Request

- Base URL: `https://www.homecastr.com`
- URL: `https://www.homecastr.com/api/v1/data/environmental/epa-echo/npdes-violations`
- Auth: none declared

Returns R2-backed EPA ECHO ICIS-NPDES permit-schedule, compliance-schedule, and single-event violation rows with permit, violation-code, RNC detection/resolution, linked-enforcement count, partition, and source-manifest context. This endpoint is public context, not an autonomous settlement oracle until refresh, checksum, revision-window, effluent/limits, detailed enforcement-action, and resolver policies are published.

## Query parameters

- `state` string
- `permit_id` string
- `category` 'permit_schedule' | 'compliance_schedule' | 'single_event'
- `violation_code` string
- `rnc_detection_code` string
- `rnc_resolution_code` string
- `year` integer
- `has_linked_enforcement` boolean
- `limit` integer
- `summary` boolean

## Response `200`

EPA ECHO ICIS-NPDES violations response.

- EpaEchoNpdesViolationResponse
  - `schema_id` string, required
  - `asset_id` string, required
  - `source_id` string, required
  - `data_snapshot_id` string, required
  - `record_count` integer, required
  - `filters` object, required
  - `manifest` EpaEchoNpdesViolationManifestSummary, required
    - `schema_id` string, required
    - `generated_at` string, date-time, required
    - `run_id` string, required
    - `source_id` string, required
    - `source_official_url` string, uri, required
    - `source_page_url` string, uri, required
    - `source_snapshot_id` string, required
    - `source_uri` string, required
    - `normalized_prefix_uri` string, required
    - `source_members` object, required
    - `source_object` object, required
    - `record_count` integer, required
    - `partition_count` integer, required
    - `partition_payload_bytes` integer, required
    - `state_counts` object, required
    - `category_counts` object, required
    - `violation_type_counts` object, required
    - `violation_code_counts` object, required
    - `rnc_detection_counts` object, required
    - `rnc_resolution_counts` object, required
    - `enforcement_link_count` integer, required
    - `records_with_linked_enforcement` integer, required
    - `enforcement_activity_type_counts` object, required
    - `enforcement_violation_code_counts` object, required
    - `settlement_policy` object, required
  - `partitions` EpaEchoNpdesViolationPartition[], required
    - `state_code` string, required
    - `category` 'permit_schedule' | 'compliance_schedule' | 'single_event', required
    - `record_count` integer, required
    - `public_path` string, required
    - `public_url` string, uri
    - `uri` string, required
    - `bytes` integer, required
    - `uncompressed_bytes` integer, required
    - `content_encoding` string, required
  - `records` EpaEchoNpdesViolationRecord[], required
    - `schema_id` string, required
    - `record_id` string, required
    - `source_id` string, required
    - `source_record_id` string, required
    - `source_snapshot_id` string, required
    - `source_uri` string, required
    - `source_official_url` string, uri, required
    - `source_page_url` string, uri, required
    - `normalization_version` string, required
    - `permit` object, required
      - `permit_id` string, nullable
      - `state_code` string, nullable
    - `violation` object, required
      - `violation_id` string, nullable
      - `category` 'permit_schedule' | 'compliance_schedule' | 'single_event'
      - `type_code` string, nullable
      - `code` string, nullable
      - `description` string, nullable
      - `single_event_comment` string, nullable
      - `single_event_agency_type_code` string, nullable
    - `schedule` object, required
      - `permit_schedule_event_id` string, nullable
      - `compliance_schedule_event_id` string, nullable
      - `compliance_schedule_number` string, nullable
      - `event_code` string, nullable
      - `event_description` string, nullable
    - `dates` object, required
      - `schedule_date` string, nullable
      - `actual_date` string, nullable
      - `report_received_date` string, nullable
      - `single_event_violation_date` string, nullable
      - `single_event_end_date` string, nullable
      - `rnc_detection_date` string, nullable
      - `rnc_resolution_date` string, nullable
    - `rnc` object, required
      - `detection_code` string, nullable
      - `detection_description` string, nullable
      - `resolution_code` string, nullable
      - `resolution_description` string, nullable
    - `enforcement` object, required
      - `linked_action_count` integer
    - `quality_flags` string[], required
    - `published_at` string, date-time, required
  - `access` DataAccessSummary, required
    - `visibility` 'public' | 'metadata_only' | 'restricted' | 'unavailable', required
    - `support_level` string, required
    - `sensitivity` string, required
    - `training_eligibility` 'benchmark_only' | 'consumer_feed' | 'training_candidate' | 'holdback', required
    - `license_status` string, required
  - `_links` object, required

## Other responses

- `400`: Invalid query parameters.

---

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