Documentation menu
GET

/violations

Returns code enforcement violation and complaint records for a jurisdiction.

Base URL

https://api.threshmoor.com

Query parameters

ParameterTypeDefaultRequiredDescription
jurisdictionstringNoFilter to a single jurisdiction (e.g. "austin"). Case-insensitive. Omit to query all jurisdictions.
limitinteger25NoHow many violations to return. Accepted range: 1–100.
violation_typestringNoKeyword filter by violation type (e.g. "Graffiti", "Building Maintenance"). Case-insensitive.

Response shape

Every successful response is wrapped in a ViolationResponse object:

{
  "jurisdiction": string,
  "count":        number,
  "violations":   Violation[]
}

Violation object

FieldTypeDescription
case_numberstring | nullThe case or complaint number.
violation_typestring | nullCategory of violation (e.g. "Building Maintenance", "Nuisance").
descriptionstring | nullFree-text description of the violation.
statusstring | nullCurrent status (e.g. "Open", "Closed").
opened_datestring | nullDate the case was opened (ISO 8601 format).
closed_datestring | nullDate the case was closed (ISO 8601 format).
addressstring | nullStreet address.
citystring | nullCity name.
zipstring | nullZIP / postal code.
latitudestring | nullLatitude coordinate.
longitudestring | nullLongitude coordinate.
jurisdictionstringThe jurisdiction this record belongs to (always present, e.g. "Austin, TX").

Example

Request

GET /violations?jurisdiction=austin&limit=2 HTTP/1.1
Host: api.threshmoor.com
X-API-Key: thresh_live_...

Response — 200 OK

{
  "jurisdiction": "Austin, TX",
  "count": 2,
  "violations": [
    {
      "case_number": "2026-043718 CE",
      "violation_type": "Building Maintenance",
      "description": "Reported structural damage to front porch and handrail",
      "status": "Open",
      "opened_date": "2026-06-10T00:00:00.000",
      "closed_date": null,
      "address": "1405 E 12TH ST",
      "city": "AUSTIN",
      "zip": "78702",
      "latitude": "30.27118200",
      "longitude": "-97.72294300",
      "jurisdiction": "Austin, TX"
    },
    {
      "case_number": "2026-041290 CE",
      "violation_type": "Graffiti",
      "description": "Graffiti on east-facing retaining wall along alley",
      "status": "Closed",
      "opened_date": "2026-05-22T00:00:00.000",
      "closed_date": "2026-06-03T00:00:00.000",
      "address": "600 W CESAR CHAVEZ ST",
      "city": "AUSTIN",
      "zip": "78701",
      "latitude": "30.26401500",
      "longitude": "-97.74802100",
      "jurisdiction": "Austin, TX"
    }
  ]
}

Error responses

StatusMeaning
502The upstream data source is unreachable or returned an unexpected response. The API never leaks raw errors; you will receive a short, human-readable message.
{
  "detail": "Could not reach the Austin violation data source: ..."
}