List traffic events
Paginated list of traffic events with filters. Free plan requires jurisdiction parameter.
Batch lookup: pass ?ids=id1,id2,... to fetch a known set of events by id. When ids is set, all other filters except plan data delay are ignored and pagination is disabled — the response always returns the full set in one page. Archived events are filtered per plan: non-analytics plans (allow_analytics: false) receive only events whose effective start_time is within the last 7 days. Active events are always returned regardless of age. total reflects the post-filter count. The batch size is capped by the plan's max_batch_size.
Query parameters
Comma-separated event IDs for batch lookup. Mutually exclusive with the filter parameters below (when present, other filters are ignored). Bounded by the plan's max_batch_size.
Filter by jurisdiction code (e.g., GA, ON, CA). Required on Free plan.
Auto-expansion: querying a state's primary code that has WZDx/CWZ or sub-state regional siblings (see GET /jurisdictions/groups) is expanded transparently to include all members. For example, ?jurisdiction=CA returns rows from CA, WZDX_CA, and 511SF.
To opt out, query a non-primary code directly (?jurisdiction=WZDX_CA returns WZDx-only rows) or pass a comma-separated list explicitly (?jurisdiction=CA,WZDX_CA), which bypasses expansion and matches each code literally.
Results per page (capped by plan)
Pagination offset
Bounding box: minLng,minLat,maxLng,maxLat
Latitude for radius search
Longitude for radius search
Radius in km (used with lat/lng)
Filter by event type
Filter by second-level classification (e.g. accident). Additive — omit to match all sub_types. See the sub_type enum on the TrafficEvent schema for the full vocabulary.
active (default) returns active events, archived returns archived events only, all disables the filter and returns both.
Plans without analytics access (allow_analytics: false) may request archived or all only when paired with a start_time_from no older than 7 days — otherwise the request is rejected with 403. Plans with analytics access have no such restriction.
Filter by road name (partial match)
Lower bound (inclusive, RFC3339) on the event's start time. Matches COALESCE(start_time, created_at), so events whose upstream feed never populated start_time still surface via their ingest time. When either time-range parameter is set and status is omitted, the default flips from active to all so archived (historical) events are returned. Lookback beyond the last 7 days requires a plan with analytics access (allow_analytics: true).
Upper bound (inclusive, RFC3339) on the event's start time. See start_time_from for column semantics. Without a start_time_from companion the range is treated as open-ended on the lower end and therefore counts as deep history (analytics plan required).
Response
Paginated events
Example response
{
"attribution": [
{
"attribution": "© Dirección General de Tráfico (DGT) — licensed under CC BY 4.0",
"license": "CC-BY 4.0",
"license_url": "https://creativecommons.org/licenses/by/4.0/",
"source_code": "ESP",
"source_name": "Spain — DGT National Access Point"
}
]
}