A customer-facing API that allows users to access, store, and analyze INRIX Signal Analytics data on their platforms, enabling custom functionality, trend analysis, and reporting.
Overview
The Signal Analytics Metrics API returns intersection performance data with:
- Comprehensive indicators (17+ metrics spanning volumes, delay, speeds, LOS)
- Flexible temporal slicing (fixed bins,
wkPart
, custom time ranges) - Multi-level spatial support (intersection and movement granularity)
- Configurable payloads (default vs. verbose output modes, namespace scoping)
Endpoint Summary
- Base URL:
https://signals-api.inrix.com
Method | Path | Description |
---|---|---|
POST | /v1/metrics/intersections |
Retrieve metrics for provisioned intersections tied to the authenticated organization or partner namespace |
Required Headers
Authorization: Bearer <token>
(UAS application token)Content-Type: application/json
Request Schema
Field | Type | Required | Notes |
---|---|---|---|
dateRanges |
array | ✓ | Inclusive ranges { startDate, endDate } . |
dimensions |
array | ✓ | Dimension objects with optional ranges (for customTimeRange ). |
metrics |
array | ✓ | Metric objects; LOS supports user-defined ranges. |
dimensionFilters |
array | Filters with name , operator , expressions . |
|
metadata |
array | Key/value items for namespace, output mode (verbose vs. default compact), or unit settings. | |
pageSize |
integer | Defaults to 1,000 (maximum 10,000). | |
nextCursor |
object | Resume pagination using cursor returned by prior page. |
Dimensions & Filters
- Spatial:
intersectionId
,movementId
- Temporal:
quarter
,month
,week
,day
,dayOfWeek
,hourOfDay
,wkPart
,15MinBin
,30MinBin
,customTimeRange
- Filtering support varies by dimension (e.g.,
hourOfDay
accepts numeric comparisons,intersectionId
supportsIN_LIST
). EnsurecustomTimeRange
definitions cover the full 24 hours in 15-minute increments (source).
Metrics Catalog
Metric Name | Description | Type | Units |
---|---|---|---|
totalVehicleCount |
Observed vehicles across all requested movements. | integer | |
throughVehicleCount |
Vehicles traversing without stopping. | integer | |
stopVehicleCount |
Vehicles coming to a stop. | integer | |
avgTravelTime |
Average travel time through the movement. | double | seconds |
maxTravelTime |
Max travel time observed. | double | seconds |
avgApproachSpeed |
Mean speed for approaching vehicles. | double | mph/kph |
maxApproachSpeed |
Highest approach speed observed. | double | mph/kph |
avgThroughApproachSpeed |
Mean approach speed for vehicles that don’t stop. | double | mph/kph |
maxThroughApproachSpeed |
Peak speed for vehicles that don’t stop. | double | mph/kph |
avgControlDelay |
Average control delay from signal operations. | double | seconds |
maxControlDelay |
Maximum observed control delay. | double | seconds |
3MDCount |
Vehicles delayed ≥3 minutes. | integer | |
3MDPct |
Share of vehicles with ≥3 minute delay. | double | percent |
POG |
Percent arrivals on green (vehicles that don’t stop). | double | percent |
turnPct |
Share of approach volume making the requested turn. | double | percent |
LOS |
LOS grade derived from average delay. | string | |
anonymized |
Indicates if data was suppressed for privacy. | boolean |
Metadata Options
unitOfMeasure
:imperial
(default) ormetric
for speed and distance units.outputMode
:default
(column header + rows) orverbose
(row objects). Verbose mode simplifies parsing but increases payload size (source).
Anonymization Behavior
- Rows with
totalVehicleCount
below the anonymization threshold (<=1 by default) are omitted unless theanonymized
metric is requested. - When
anonymized
is requested, sensitive rows retaintotalVehicleCount
and set other metrics tonull
.
Data Quality and Privacy
All published metrics undergo INRIX data quality validation. Use the anonymized
flag and LOS configuration to align reporting with agency standards.
Examples
Example 1: Peak Hour Summary (Default Output)
POST /v1/metrics/intersections
Content-Type: application/json
{
"dateRanges": [
{ "startDate": "2025-01-01", "endDate": "2025-01-31" }
],
"dimensions": [
{ "name": "intersectionId" },
{ "name": "dayOfWeek" },
{ "name": "hourOfDay" }
],
"dimensionFilters": [
{
"name": "intersectionId",
"operator": "IN_LIST",
"expressions": ["45.4978_-122.6376"]
},
{
"name": "hourOfDay",
"operator": "IN_LIST",
"expressions": [7, 8, 9]
}
],
"metrics": [
{ "name": "totalVehicleCount" },
{ "name": "avgControlDelay" },
{
"name": "LOS",
"ranges": [
{ "name": "A", "endAvgControlDelay": 10 },
{ "name": "B", "startAvgControlDelay": 10, "endAvgControlDelay": 20 },
{ "name": "C", "startAvgControlDelay": 20, "endAvgControlDelay": 35 },
{ "name": "D", "startAvgControlDelay": 35, "endAvgControlDelay": 55 },
{ "name": "E", "startAvgControlDelay": 55, "endAvgControlDelay": 80 },
{ "name": "F", "startAvgControlDelay": 80 }
]
}
],
"pageSize": 500
}
Response excerpt (JSON):
{
"createdDate": "2025-02-01T03:11:12Z",
"responseId": "1b73e2d7-0c6d-4c55-8f6e-21b076c88a3b",
"data": [
{
"columnHeader": {
"dimensionHeaderEntries": [
{ "name": "intersectionId", "type": "String" },
{ "name": "dayOfWeek", "type": "String" },
{ "name": "hourOfDay", "type": "Integer" }
],
"metricHeaderEntries": [
{ "name": "totalVehicleCount", "type": "Integer" },
{ "name": "avgControlDelay", "type": "Double" },
{ "name": "LOS", "type": "String" }
]
},
"rows": [
["45.4978_-122.6376", "Mon", 7, 82, 10.6, "C"],
["45.4978_-122.6376", "Mon", 8, 94, 14.2, "B"],
["45.4978_-122.6376", "Tue", 7, 76, 9.8, "A"]
]
}
]
}
Example 2: Verbose Mode with Anonymization Indicator
POST /v1/metrics/intersections
Content-Type: application/json
{
"dateRanges": [
{ "startDate": "2025-02-10", "endDate": "2025-02-16" }
],
"dimensions": [
{ "name": "intersectionId" },
{ "name": "week" }
],
"metrics": [
{ "name": "totalVehicleCount" },
{ "name": "avgControlDelay" },
{ "name": "anonymized" }
],
"metadata": [
{ "key": "outputMode", "value": "verbose" }
]
}
Response excerpt (JSON):
{
"createdDate": "2025-02-17T05:22:10Z",
"responseId": "e0df9215-9dc9-4cc7-9650-9ca0b2d98744",
"data": {
"records": [
{
"intersectionId": "38.9127_-76.8387",
"week": "2025-W07",
"totalVehicleCount": 540,
"avgControlDelay": 18.4,
"anonymized": false
},
{
"intersectionId": "38.9127_-76.8387",
"week": "2025-W07",
"totalVehicleCount": 0,
"avgControlDelay": null,
"anonymized": true
}
],
"nextCursor": {
"intersectionId": "38.9127_-76.8387",
"week": "2025-W07"
}
}
}
The anonymized record retains only totalVehicleCount
and anonymized
, reflecting privacy rules for low-volume periods.