- See what changed across the whole population on a given day (
/v1/changes/...). - See the history of a specific carrier (
/v1/carriers/{dot}/changes).
Categories
Threshold-gated categories (
safety_change, fleet_change) intentionally drop noisy small movements. If you need point-in-time fidelity below the thresholds, fall back to the point-in-time carrier endpoint.
List change-feed runs
integer
default:"1"
integer
default:"10"
Max 50.
Latest run with detail
GET /v1/changes/{etl_run_id}, but anchored to the newest run by batch_ts. Useful for “what changed last night?” dashboards.
string
Filter to a single category (see table above).
string
Two-letter state code. Joins
carrier_mv to filter to carriers whose current physical state matches. Useful for portcos that only care about a region.integer
default:"1"
integer
default:"50"
Max 200.
Specific run with detail
category, page, and per_page query params as /latest.
old_values / new_values payload shape varies by category — each one carries only the fields that were tracked for that diff type. See diff.sql for the authoritative field list per category.
History for a specific carrier
string
required
string
integer
default:"1"
integer
default:"50"
{"changes": []} (not 404) when the DOT has no recorded changes — consistent with other carrier-scoped endpoints.
Horizon
GET /v1/meta exposes etl_changes_horizon — the earliest batch_ts in the table. Anything older than that has aged out of the 52-week retention window.