API Reference
Endpoints grouped by resource.
Reference pages are generated from the OpenAPI spec. Each page lists the request signature, parameters, response shape, and example payloads.
Contractors
License records from MN DLI. Search by name, license number, city, type, or enforcement flag.
Permits
Building and trade permits across Minnesota jurisdictions. Search by address, block, or contractor. Coverage and per-county field-quality (contractor name, lat/lng, description fill rates) live at /coverage.
Parcels
Property parcels with permit linkage. Search by PIN, address, bounding box, or point-in-polygon.
Enforcement
DLI disciplinary orders, revocations, and penalties.
OSHA
Workplace safety inspections, violations, and accidents.
AG Enforcement
Attorney General lawsuits, settlements, and consent decrees.
Match tiers
Enforcement, OSHA, and AG records attach to contractor records via a match pipeline. Each match carries a tier:
- VERIFIED — high-confidence match (exact license number, or address plus name).
- LIKELY — strong fuzzy match, manually auditable.
- POSSIBLE — weaker fuzzy match; use with judgment.
- AMBIGUOUS — multiple candidate contractors. Treat the match as a pointer rather than a conclusion.
For aggregate reporting, filter to VERIFIED and LIKELY unless you have a specific reason to include the rest.
Data sources
Where each field on a PullFirst contractor record originates, how it attaches to the record, and how fresh it is.
Search AG enforcement actions with filtering, sorting, and paging GET
Uses Gridify syntax for filtering. Examples: - `companyName=*Construction*` - company name contains - `city=Minneapolis` - exact city match - `orderType=Settlement` - filter by order type - `penaltyAmount>1000000` - penalty greater than $1M - `orderDate>2022-01-01` - orders after date Order types: Lawsuit, Settlement, Judgment, Consent Decree