Report

Report

Overview

The Reports API provides powerful analytics and insights derived from your fleet's telematics data. These endpoints enable you to access various metrics, statistics, and trends to inform decision-making, measure performance, and identify opportunities for improvement across your entire fleet or specific vehicles.

Available Report Types

The Reports API includes several specialized endpoints:

  1. Event Accuracy Report - Analyze detection accuracy of safety events
  2. Global Report - Access anonymized industry benchmarks across all clients
  3. Usage Report - Examine daily distance metrics and hourly driving patterns
  4. Behavioral Report - Evaluate detailed driver behavior metrics and trends
  5. Environmental Report - Understand road usage, weather impact, and intersection analytics
  6. Validation Engine Reports - Events received and validated, the incidents Manifold added, and events by risk. See Validation Engine Reports
  7. Incident Counts - The incidents per type over 30, 60 or 90 days. See Incident Counts

The Event Accuracy and Global reports answer with the envelope (status, message, data, next); the Usage, Behavioral and Environmental reports answer with the report itself.

Common Parameters

Many report endpoints support these common parameters:

ParameterTypeDescription
connectionIdUUID(Optional) Filter report by specific connection
vehicleIdsUUID, repeatable(Optional) Filter the usage, behavioral and environmental reports by vehicle. Repeat the parameter for each id
vehicleGroupIdsstring, repeatable(Optional) The same, by vehicle group
fromdate-timeStart date for the report period (ISO 8601 format)
todate-timeEnd date for the report period (ISO 8601 format)

The Event Accuracy, Usage, Behavioral and Environmental reports cover at most 30 days: a longer range answers 400 ("Date range should be less than 30 days"). Usage, behavioral and environmental reports take the whole of the to day; the Event Accuracy report takes the exact to time you send.

Event Accuracy Report

GET /reports/event-accuracy

Retrieve how many of the incidents reported by your telematics provider (TSP) Manifold rated Accurate and Inaccurate, per day and incident type. Incidents that are still awaiting validation, and incidents Manifold identified itself, are not part of this report: for those see Incident Counts and the Validation Engine Reports.

Request Parameters

ParameterTypeLocationRequiredDescription
x-api-keyStringHeaderYesAPI authentication key
connectionIdUUIDQueryNoFilter results by specific connection ID
providerIdUUIDQueryNoFilter results by specific telematics provider ID
fromdate-timeQueryYesStart of the report data (ISO 8601 format)
todate-timeQueryYesEnd of the report data (ISO 8601 format). At most 30 days after from

Example Request

curl --request GET \
  --url "https://api.analytics.autos/reports/event-accuracy?from=2026-10-01T00:00:00Z&to=2026-10-02T23:59:59Z" \
  --header "x-api-key: YOUR-API-KEY"

Response Structure

The report has one row per day and incident type. The example is shortened to four rows: a real response has a row for every day of the range and every incident type that had a rated incident that day.

{
  "status": 200,
  "message": null,
  "data": [
    {
      "incidentType": "Tailgating",
      "accuracy": { "tsp": { "accurateCount": 131, "inaccurateCount": 1201 } },
      "createdAt": "2026-10-01T00:00:00Z"
    },
    {
      "incidentType": "Distracted Driving",
      "accuracy": { "tsp": { "accurateCount": 83, "inaccurateCount": 1419 } },
      "createdAt": "2026-10-01T00:00:00Z"
    },
    {
      "incidentType": "Tailgating",
      "accuracy": { "tsp": { "accurateCount": 118, "inaccurateCount": 1150 } },
      "createdAt": "2026-10-02T00:00:00Z"
    },
    {
      "incidentType": "Distracted Driving",
      "accuracy": { "tsp": { "accurateCount": 97, "inaccurateCount": 1380 } },
      "createdAt": "2026-10-02T00:00:00Z"
    }
  ],
  "next": null
}

Response Fields

FieldTypeDescription
statusIntegerHTTP status code (200 for success)
messageStringResponse message (null if successful)
dataArrayOne object per day and incident type
data[].incidentTypeStringType of incident being analyzed (e.g., "Tailgating", "Hard Brake")
data[].accuracy.tsp.accurateCountIntegerIncidents the telematics provider reported that Manifold rated Accurate that day
data[].accuracy.tsp.inaccurateCountIntegerIncidents the telematics provider reported that Manifold rated Inaccurate that day
data[].createdAtStringThe day of the figures, as a UTC date at 00:00:00
nextStringAlways null: the report has one page

To get the figures of the whole range for one incident type, add up its rows. The accuracy of the provider's detection for that type is accurateCount / (accurateCount + inaccurateCount).

Usage Notes

  • Use this endpoint to evaluate the reliability of your fleet's event detection system
  • Compare the accuracy of your provider's detection between incident types
  • Monitor accuracy trends day by day to measure improvements in detection systems
  • Filter by specific date ranges to correlate accuracy with other operational variables

Global Report

GET /reports/global

Retrieve a global report containing industry benchmarks and aggregated metrics across all clients in the Manifold system. This data provides valuable context for comparing your fleet's performance against industry standards.

Request Parameters

ParameterTypeLocationRequiredDescription
x-api-keyStringHeaderYesAPI authentication key

Example Request

curl --request GET \
  --url "https://api.analytics.autos/reports/global" \
  --header "x-api-key: YOUR-API-KEY"

Response Structure

{
  "status": 200,
  "message": null,
  "data": {
    "normalizedAccurateIncidentAveragePerType": [
      { "type": "Harsh Braking", "count": 10.2, "rawCount": 0 },
      { "type": "Speeding", "count": 5.8, "rawCount": 0 },
      { "type": "Hard Cornering", "count": 4.3, "rawCount": 0 },
      { "type": "Tailgating", "count": 2.4, "rawCount": 0 },
      { "type": "Distracted Driving", "count": 3.6, "rawCount": 0 }
    ]
  },
  "next": null
}

Response Fields

FieldTypeDescription
statusIntegerHTTP status code (200 for success)
messageStringResponse message (null if successful)
data.normalizedAccurateIncidentAveragePerTypeArrayOne entry per incident type, with the industry figure
data.normalizedAccurateIncidentAveragePerType[].typeStringHuman-readable name of the incident type
data.normalizedAccurateIncidentAveragePerType[].countNumberThe normalized rate: accurate incidents of this type per 100,000 kilometers driven, over all the clients' data. For example 10.2 means 10.2 accurate Harsh Braking incidents for every 100,000 km
data.normalizedAccurateIncidentAveragePerType[].rawCountIntegerNot filled in by this report: it is always 0. Use count
nextStringAlways null: the report has one page

Usage Notes

  • The rate is per 100,000 km, the same unit as the rate of the Behavioral Report, so the two can be compared directly
  • The figures cover all the history and all the clients; the report takes no date range
  • Use global averages as performance benchmarks for your fleet
  • Identify areas where your fleet exceeds or falls below industry standards
  • Set realistic safety and performance targets based on industry metrics
  • Understand your relative position within the broader fleet management landscape
  • Factor industry benchmarks into your safety and operational improvement strategies

Usage Report

GET /reports/overview/usage

Retrieve comprehensive daily distance-driven statistics and hourly driving patterns for the specified time period. This detailed report helps fleet managers understand vehicle utilization patterns and driving habits, enabling optimized scheduling and resource allocation.

Request Parameters

ParameterTypeLocationRequiredDescription
x-api-keyStringHeaderYesAPI authentication key
fromdate-timeQueryYesStart of the report in UTC (ISO 8601 format). Only the date counts. At most 30 days from from to to
todate-timeQueryYesEnd of the report in UTC (ISO 8601 format). Only the date counts, and the whole of that day is included
connectionIdUUIDQueryNoFilter by specific connection
vehicleIdsUUID, repeatableQueryNoFilter by specific vehicles. Repeat the parameter for each id
vehicleGroupIdsstring, repeatableQueryNoFilter by vehicle groups

Example Request

curl --request GET \
  --url "https://api.analytics.autos/reports/overview/usage?from=2026-10-01T00:00:00Z&to=2026-10-04T23:59:59Z&vehicleIds=123e4567-e89b-12d3-a456-426614174000" \
  --header "x-api-key: YOUR-API-KEY"

Response Structure

{
  "dailyDistanceDriven": [
    {
      "dateTime": "2026-10-01T00:00:00Z",
      "distanceInMeter": 125000
    },
    {
      "dateTime": "2026-10-02T00:00:00Z",
      "distanceInMeter": 85000
    },
    {
      "dateTime": "2026-10-03T00:00:00Z",
      "distanceInMeter": 142000
    },
    {
      "dateTime": "2026-10-04T00:00:00Z",
      "distanceInMeter": 97500
    }
  ],
  "hourlyKilometerPercentage": [
    {
      "time": "08:00:00",
      "percent": 12.5,
      "rushHourTrafficType": 1
    },
    {
      "time": "09:00:00",
      "percent": 9.2,
      "rushHourTrafficType": 1
    },
    {
      "time": "17:00:00",
      "percent": 15.3,
      "rushHourTrafficType": 2
    },
    {
      "time": "18:00:00",
      "percent": 14.1,
      "rushHourTrafficType": 2
    }
  ]
}

The example is shortened: it lists four hours of the day, while a real response lists all 24 hours (00:00:00 to 23:00:00), whose percent values add up to 100.

Response Fields

FieldTypeDescription
dailyDistanceDrivenArrayArray of daily distance measurements
dailyDistanceDriven[].dateTimeStringISO 8601 date for the distance measurement
dailyDistanceDriven[].distanceInMeterNumberDistance driven in meters for that day
hourlyKilometerPercentageArrayArray of hourly driving distribution data
hourlyKilometerPercentage[].timeStringTime in format "HH:MM:SS" indicating the hour
hourlyKilometerPercentage[].percentNumberPercentage of total kilometers driven during this hour
hourlyKilometerPercentage[].rushHourTrafficTypeIntegerTraffic condition indicator: 0 (Normal), 1 (High Traffic), 2 (Very High Traffic)

Usage Notes

  • Analyze daily distance patterns to identify usage anomalies and optimization opportunities
  • Examine hourly distribution to understand rush hour exposure for more efficient scheduling
  • Compare multiple vehicles to identify utilization disparities within your fleet
  • Track changes over time to assess the impact of policy or route changes
  • Use rush hour traffic indicators to optimize scheduling for fuel efficiency and reduced idle time
  • Monitor days without activity to improve asset utilization
  • Correlate peak usage days with business operations for better resource planning

Behavioral Report

GET /reports/overview/behavioral

Retrieve comprehensive behavioral analytics data, including incident risk metrics, speeding patterns, and detailed analytics comparing fleet-specific data against client-wide benchmarks. This in-depth report provides valuable insights into driver behavior trends, risk factors, and safety performance over time.

Request Parameters

ParameterTypeLocationRequiredDescription
x-api-keyStringHeaderYesAPI authentication key
fromdate-timeQueryYesStart date for the behavioral analysis (ISO 8601 format). Only the date counts. At most 30 days from from to to
todate-timeQueryYesEnd date for the behavioral analysis (ISO 8601 format). Only the date counts, and the whole of that day is included
vehicleIdsUUID, repeatableQueryNoFilter by specific vehicles. Repeat the parameter for each id
vehicleGroupIdsstring, repeatableQueryNoFilter by vehicle groups
connectionIdUUIDQueryNoFilter by specific connection
incidentTypeStringQueryNoShow incidentAnalytics for this incident type. Without it, or with an unknown type, incidentAnalytics covers all incident types (allIncident)

Example Request

curl --request GET \
  --url "https://api.analytics.autos/reports/overview/behavioral?from=2026-10-01T00:00:00Z&to=2026-10-30T23:59:59Z" \
  --header "x-api-key: YOUR-API-KEY"

Response Structure

The example is shortened: incidentRiskAndRates lists 8 incident types, a real response lists all of them.

{
  "incidentRiskAndRates": [
    {
      "type": "Late Braking",
      "risk": 0,
      "rate": 0.113515
    },
    {
      "type": "Lane Departure",
      "risk": 2.98287,
      "rate": 0.158921
    },
    {
      "type": "Hard Brake",
      "risk": 3156.18142,
      "rate": 6.311428
    },
    {
      "type": "Harsh Motion",
      "risk": 62.43325,
      "rate": 0.249733
    },
    {
      "type": "Stop Sign Pass",
      "risk": 728.883344,
      "rate": 6.833597
    },
    {
      "type": "Distracted Driving",
      "risk": 11081.3238,
      "rate": 221.626476
    },
    {
      "type": "Accident",
      "risk": 2224.894,
      "rate": 0.317842
    },
    {
      "type": "Malfunction",
      "risk": 0,
      "rate": 154.19863
    }
  ],
  "speedingAnalytics": {
    "totalSpeedingDistanceDriven": 1097604.589426,
    "totalDistanceDriven": 440470839.617593,
    "dayTimeSpeedingDistance": 712773.989749,
    "clientAveragePercent": 0.249189,
    "filteredSpeedingDistanceTrendOverTime": {
      "2026-10-01T00:00:00Z": 0.249189
    },
    "clientSpeedingDistanceTrendOverTime": {
      "2026-10-01T00:00:00Z": 0.249189
    }
  },
  "incidentAnalytics": {
    "incidentType": "allIncident",
    "filteredRate": 568.800423,
    "clientRate": 568.800423,
    "filteredRisk": 0,
    "clientRisk": 0,
    "filteredRiskTrendOverTime": {
      "2026-10-01T00:00:00Z": 0
    },
    "clientRiskTrendOverTime": {
      "2026-10-01T00:00:00Z": 0
    },
    "filteredRateTrendOverTime": {
      "2026-10-01T00:00:00Z": 568.800423
    },
    "clientRateTrendOverTime": {
      "2026-10-01T00:00:00Z": 568.800423
    }
  }
}

Response Fields

FieldTypeDescription
incidentRiskAndRatesArrayArray of risk and rate metrics for different incident types
incidentRiskAndRates[].typeStringSpecific type of incident (e.g., "Hard Brake", "Distracted Driving")
incidentRiskAndRates[].riskNumberRisk score calculated for this incident type (higher indicates greater risk)
incidentRiskAndRates[].rateNumberAccurate incidents of this type per 100,000 kilometers driven
speedingAnalyticsObjectDetailed analysis of speeding behaviors
speedingAnalytics.totalSpeedingDistanceDrivenNumberTotal distance driven while speeding (meters)
speedingAnalytics.totalDistanceDrivenNumberTotal distance driven in the analyzed period (meters)
speedingAnalytics.dayTimeSpeedingDistanceNumberPart of totalSpeedingDistanceDriven driven during daylight hours (meters). It is never more than the total
speedingAnalytics.clientAveragePercentNumberAverage share of distance driven while speeding across all clients, as a percentage (0.249189 is 0.249 %). The speeding trend values are percentages too
speedingAnalytics.filteredSpeedingDistanceTrendOverTimeObjectTemporal trend of speeding distance for the filtered dataset
speedingAnalytics.clientSpeedingDistanceTrendOverTimeObjectTemporal trend of speeding distance across all clients
incidentAnalyticsObjectDetailed analysis of a specific incident type or all incidents combined
incidentAnalytics.incidentTypeStringThe incident type being analyzed (or "allIncident" for combined analysis)
incidentAnalytics.filteredRateNumberRate value for filtered data (per 100,000 kilometers)
incidentAnalytics.clientRateNumberAverage rate across all client data (per 100,000 kilometers)
incidentAnalytics.filteredRiskNumberRisk score for filtered data
incidentAnalytics.clientRiskNumberAverage risk score across all client data
incidentAnalytics.filteredRiskTrendOverTimeObjectTemporal trend of risk values for filtered data
incidentAnalytics.clientRiskTrendOverTimeObjectTemporal trend of risk values across all clients
incidentAnalytics.filteredRateTrendOverTimeObjectTemporal trend of incident rates for filtered data
incidentAnalytics.clientRateTrendOverTimeObjectTemporal trend of incident rates across all clients

Usage Notes

  • Use comparative metrics between your filtered data and client-wide averages for performance benchmarking
  • Analyze temporal trends to identify improvement or deterioration patterns
  • Drill down into specific incident types to focus safety initiatives and driver coaching
  • Consider daylight vs. nighttime speeding patterns for targeted safety programs
  • Examine associated factors to understand contextual influences on driver behavior
  • Track behavior scores over time to measure the effectiveness of safety programs
  • Use speeding severity breakdowns to prioritize interventions for high-risk behaviors
  • Correlate behavior metrics with environmental factors for comprehensive risk assessment

Environmental Report

GET /reports/overview/environmental

Retrieve comprehensive environmental analytics including road type usage, weather conditions encountered during trips, and intersection analytics. This report helps understand how external factors affect fleet operations and safety, enabling better route planning and risk management.

Request Parameters

ParameterTypeLocationRequiredDescription
x-api-keyStringHeaderYesAPI authentication key
fromdate-timeQueryYesStart date for the environmental analysis (ISO 8601 format). Only the date counts. At most 30 days from from to to
todate-timeQueryYesEnd date for the environmental analysis (ISO 8601 format). Only the date counts, and the whole of that day is included
connectionIdUUIDQueryNoFilter by specific connection
vehicleIdsUUID, repeatableQueryNoFilter by specific vehicles. Repeat the parameter for each id
vehicleGroupIdsstring, repeatableQueryNoFilter by vehicle groups

Example Request

curl --request GET \
  --url "https://api.analytics.autos/reports/overview/environmental?from=2026-10-01T00:00:00Z&to=2026-10-30T23:59:59Z" \
  --header "x-api-key: YOUR-API-KEY"

Response Structure

The example is shortened: topIntersectionsDensity lists three areas, a real response lists more. The distancePercentage values of roadTypeAnalytics add up to 100.

{
  "roadTypeAnalytics": [
    {
      "roadType": "Other/Inactive",
      "distancePercentage": 0.17271703314147951
    },
    {
      "roadType": "Special Purpose Roads",
      "distancePercentage": 0.09721514617499712
    },
    {
      "roadType": "Small Ways",
      "distancePercentage": 6.19513863970309303
    },
    {
      "roadType": "Major Roads",
      "distancePercentage": 90.68600371439669
    },
    {
      "roadType": "Local Roads",
      "distancePercentage": 1.2727019952205858
    },
    {
      "roadType": "Secondary Roads",
      "distancePercentage": 1.5762234713631627
    }
  ],
  "weatherAnalytics": [
    {
      "weatherType": "Snow",
      "distance": 130310838.49529277,
      "isSevere": true
    },
    {
      "weatherType": "Rain/Drizzle",
      "distance": 231885495.49258122,
      "isSevere": true
    },
    {
      "weatherType": "Mist/Fog",
      "distance": 323046750.49691814,
      "isSevere": false
    },
    {
      "weatherType": "Clear/Partly Cloudy",
      "distance": 1676696557.333202,
      "isSevere": false
    },
    {
      "weatherType": "Cloudy/Overcast",
      "distance": 1907548852.6034174,
      "isSevere": false
    }
  ],
  "intersectionPassedAnalytics": {
    "intersectionPassedCount": 2943427,
    "distanceWithIntersection": 4023191415.937812,
    "intersectionRate": 731.6149533277633,
    "topIntersectionsDensity": [
      {
        "postalCode": "07033",
        "state": "New Jersey",
        "country": "USA",
        "intersectionRate": 1107397.4854366921
      },
      {
        "postalCode": "07410",
        "state": "New Jersey",
        "country": "USA",
        "intersectionRate": 137207.28907399077
      },
      {
        "postalCode": "07002",
        "state": "New Jersey",
        "country": "USA",
        "intersectionRate": 63319.081312534436
      }
    ]
  }
}

Response Fields

FieldTypeDescription
roadTypeAnalyticsArrayArray of analytics about road type usage
roadTypeAnalytics[].roadTypeStringType of road (e.g., "Major Roads", "Local Roads")
roadTypeAnalytics[].distancePercentageNumberPercentage of total distance traveled on this road type
weatherAnalyticsArrayArray of analytics about weather conditions encountered
weatherAnalytics[].weatherTypeStringType of weather condition (e.g., "Snow", "Rain/Drizzle")
weatherAnalytics[].distanceNumberDistance traveled in this weather condition (meters)
weatherAnalytics[].isSevereBooleanIndicates if this weather condition is considered severe
intersectionPassedAnalyticsObjectAnalytics about intersections encountered during trips
intersectionPassedAnalytics.intersectionPassedCountIntegerTotal number of intersections passed
intersectionPassedAnalytics.distanceWithIntersectionNumberTotal distance traveled through intersections (meters)
intersectionPassedAnalytics.intersectionRateNumberIntersections passed per 1,000 kilometers (in the example, 2,943,427 intersections over 4,023,191 km is 731.6)
intersectionPassedAnalytics.topIntersectionsDensityArrayList of areas with highest intersection density
intersectionPassedAnalytics.topIntersectionsDensity[].postalCodeStringPostal/ZIP code of the area
intersectionPassedAnalytics.topIntersectionsDensity[].stateStringState/province of the area
intersectionPassedAnalytics.topIntersectionsDensity[].countryStringCountry of the area
intersectionPassedAnalytics.topIntersectionsDensity[].intersectionRateNumberIntersections per 1,000 kilometers in this area

Usage Notes

  • Analyze road type distribution to understand your fleet's typical driving environment and exposure
  • Correlate weather conditions with safety events to identify environmental risk factors and seasonal patterns
  • Use intersection analytics to optimize routes and reduce exposure to high-density intersection areas
  • Consider seasonal variations in environmental factors when planning operations and training
  • Identify high-risk combinations of road types, weather conditions, and time of day
  • Use time-of-day analytics to schedule operations during safer time periods
  • Compare incident rates across different environmental conditions to prioritize safety interventions
  • Target driver training for specific environmental challenges identified in the report

Best Practices for Reports API

Optimizing Report Requests

  1. Date Range Selection
    • Use appropriate time ranges to optimize response times and data relevance
    • For large fleets, shorter time ranges (e.g., 1-4 weeks) typically provide more manageable and actionable datasets
    • Historical trend analysis may require longer ranges with lower detail levels
  2. Filtering Strategies
    • Filter by connection ID when analyzing data from specific telematics providers
    • Use vehicle ID filtering for individual vehicle performance assessment
    • Apply multiple filters to pinpoint specific patterns or issues
  3. Caching Considerations
    • Cache report data for frequently accessed time periods to reduce API load
    • Implement time-based cache invalidation aligned with your operational cycles
    • Consider incremental updates for long-term trend data

Did this page help you?