INRIX IQ logo

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:

Endpoint Summary

Method Path Description
POST /v1/metrics/intersections Retrieve metrics for provisioned intersections tied to the authenticated organization or partner namespace

Required Headers

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

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

Anonymization Behavior

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.