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:
- Event Accuracy Report - Analyze detection accuracy of safety events
- Global Report - Access anonymized industry benchmarks across all clients
- Usage Report - Examine daily distance metrics and hourly driving patterns
- Behavioral Report - Evaluate detailed driver behavior metrics and trends
- Environmental Report - Understand road usage, weather impact, and intersection analytics
- Validation Engine Reports - Events received and validated, the incidents Manifold added, and events by risk. See Validation Engine Reports
- 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:
| Parameter | Type | Description |
|---|---|---|
connectionId | UUID | (Optional) Filter report by specific connection |
vehicleIds | UUID, repeatable | (Optional) Filter the usage, behavioral and environmental reports by vehicle. Repeat the parameter for each id |
vehicleGroupIds | string, repeatable | (Optional) The same, by vehicle group |
from | date-time | Start date for the report period (ISO 8601 format) |
to | date-time | End 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
| Parameter | Type | Location | Required | Description |
|---|---|---|---|---|
x-api-key | String | Header | Yes | API authentication key |
connectionId | UUID | Query | No | Filter results by specific connection ID |
providerId | UUID | Query | No | Filter results by specific telematics provider ID |
from | date-time | Query | Yes | Start of the report data (ISO 8601 format) |
to | date-time | Query | Yes | End 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
| Field | Type | Description |
|---|---|---|
status | Integer | HTTP status code (200 for success) |
message | String | Response message (null if successful) |
data | Array | One object per day and incident type |
data[].incidentType | String | Type of incident being analyzed (e.g., "Tailgating", "Hard Brake") |
data[].accuracy.tsp.accurateCount | Integer | Incidents the telematics provider reported that Manifold rated Accurate that day |
data[].accuracy.tsp.inaccurateCount | Integer | Incidents the telematics provider reported that Manifold rated Inaccurate that day |
data[].createdAt | String | The day of the figures, as a UTC date at 00:00:00 |
next | String | Always 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
| Parameter | Type | Location | Required | Description |
|---|---|---|---|---|
x-api-key | String | Header | Yes | API 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
| Field | Type | Description |
|---|---|---|
status | Integer | HTTP status code (200 for success) |
message | String | Response message (null if successful) |
data.normalizedAccurateIncidentAveragePerType | Array | One entry per incident type, with the industry figure |
data.normalizedAccurateIncidentAveragePerType[].type | String | Human-readable name of the incident type |
data.normalizedAccurateIncidentAveragePerType[].count | Number | The 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[].rawCount | Integer | Not filled in by this report: it is always 0. Use count |
next | String | Always null: the report has one page |
Usage Notes
- The rate is per 100,000 km, the same unit as the
rateof 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
| Parameter | Type | Location | Required | Description |
|---|---|---|---|---|
x-api-key | String | Header | Yes | API authentication key |
from | date-time | Query | Yes | Start of the report in UTC (ISO 8601 format). Only the date counts. At most 30 days from from to to |
to | date-time | Query | Yes | End of the report in UTC (ISO 8601 format). Only the date counts, and the whole of that day is included |
connectionId | UUID | Query | No | Filter by specific connection |
vehicleIds | UUID, repeatable | Query | No | Filter by specific vehicles. Repeat the parameter for each id |
vehicleGroupIds | string, repeatable | Query | No | Filter 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
| Field | Type | Description |
|---|---|---|
dailyDistanceDriven | Array | Array of daily distance measurements |
dailyDistanceDriven[].dateTime | String | ISO 8601 date for the distance measurement |
dailyDistanceDriven[].distanceInMeter | Number | Distance driven in meters for that day |
hourlyKilometerPercentage | Array | Array of hourly driving distribution data |
hourlyKilometerPercentage[].time | String | Time in format "HH:MM:SS" indicating the hour |
hourlyKilometerPercentage[].percent | Number | Percentage of total kilometers driven during this hour |
hourlyKilometerPercentage[].rushHourTrafficType | Integer | Traffic 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
| Parameter | Type | Location | Required | Description |
|---|---|---|---|---|
x-api-key | String | Header | Yes | API authentication key |
from | date-time | Query | Yes | Start date for the behavioral analysis (ISO 8601 format). Only the date counts. At most 30 days from from to to |
to | date-time | Query | Yes | End date for the behavioral analysis (ISO 8601 format). Only the date counts, and the whole of that day is included |
vehicleIds | UUID, repeatable | Query | No | Filter by specific vehicles. Repeat the parameter for each id |
vehicleGroupIds | string, repeatable | Query | No | Filter by vehicle groups |
connectionId | UUID | Query | No | Filter by specific connection |
incidentType | String | Query | No | Show 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
| Field | Type | Description |
|---|---|---|
incidentRiskAndRates | Array | Array of risk and rate metrics for different incident types |
incidentRiskAndRates[].type | String | Specific type of incident (e.g., "Hard Brake", "Distracted Driving") |
incidentRiskAndRates[].risk | Number | Risk score calculated for this incident type (higher indicates greater risk) |
incidentRiskAndRates[].rate | Number | Accurate incidents of this type per 100,000 kilometers driven |
speedingAnalytics | Object | Detailed analysis of speeding behaviors |
speedingAnalytics.totalSpeedingDistanceDriven | Number | Total distance driven while speeding (meters) |
speedingAnalytics.totalDistanceDriven | Number | Total distance driven in the analyzed period (meters) |
speedingAnalytics.dayTimeSpeedingDistance | Number | Part of totalSpeedingDistanceDriven driven during daylight hours (meters). It is never more than the total |
speedingAnalytics.clientAveragePercent | Number | Average 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.filteredSpeedingDistanceTrendOverTime | Object | Temporal trend of speeding distance for the filtered dataset |
speedingAnalytics.clientSpeedingDistanceTrendOverTime | Object | Temporal trend of speeding distance across all clients |
incidentAnalytics | Object | Detailed analysis of a specific incident type or all incidents combined |
incidentAnalytics.incidentType | String | The incident type being analyzed (or "allIncident" for combined analysis) |
incidentAnalytics.filteredRate | Number | Rate value for filtered data (per 100,000 kilometers) |
incidentAnalytics.clientRate | Number | Average rate across all client data (per 100,000 kilometers) |
incidentAnalytics.filteredRisk | Number | Risk score for filtered data |
incidentAnalytics.clientRisk | Number | Average risk score across all client data |
incidentAnalytics.filteredRiskTrendOverTime | Object | Temporal trend of risk values for filtered data |
incidentAnalytics.clientRiskTrendOverTime | Object | Temporal trend of risk values across all clients |
incidentAnalytics.filteredRateTrendOverTime | Object | Temporal trend of incident rates for filtered data |
incidentAnalytics.clientRateTrendOverTime | Object | Temporal 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
| Parameter | Type | Location | Required | Description |
|---|---|---|---|---|
x-api-key | String | Header | Yes | API authentication key |
from | date-time | Query | Yes | Start date for the environmental analysis (ISO 8601 format). Only the date counts. At most 30 days from from to to |
to | date-time | Query | Yes | End date for the environmental analysis (ISO 8601 format). Only the date counts, and the whole of that day is included |
connectionId | UUID | Query | No | Filter by specific connection |
vehicleIds | UUID, repeatable | Query | No | Filter by specific vehicles. Repeat the parameter for each id |
vehicleGroupIds | string, repeatable | Query | No | Filter 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
| Field | Type | Description |
|---|---|---|
roadTypeAnalytics | Array | Array of analytics about road type usage |
roadTypeAnalytics[].roadType | String | Type of road (e.g., "Major Roads", "Local Roads") |
roadTypeAnalytics[].distancePercentage | Number | Percentage of total distance traveled on this road type |
weatherAnalytics | Array | Array of analytics about weather conditions encountered |
weatherAnalytics[].weatherType | String | Type of weather condition (e.g., "Snow", "Rain/Drizzle") |
weatherAnalytics[].distance | Number | Distance traveled in this weather condition (meters) |
weatherAnalytics[].isSevere | Boolean | Indicates if this weather condition is considered severe |
intersectionPassedAnalytics | Object | Analytics about intersections encountered during trips |
intersectionPassedAnalytics.intersectionPassedCount | Integer | Total number of intersections passed |
intersectionPassedAnalytics.distanceWithIntersection | Number | Total distance traveled through intersections (meters) |
intersectionPassedAnalytics.intersectionRate | Number | Intersections passed per 1,000 kilometers (in the example, 2,943,427 intersections over 4,023,191 km is 731.6) |
intersectionPassedAnalytics.topIntersectionsDensity | Array | List of areas with highest intersection density |
intersectionPassedAnalytics.topIntersectionsDensity[].postalCode | String | Postal/ZIP code of the area |
intersectionPassedAnalytics.topIntersectionsDensity[].state | String | State/province of the area |
intersectionPassedAnalytics.topIntersectionsDensity[].country | String | Country of the area |
intersectionPassedAnalytics.topIntersectionsDensity[].intersectionRate | Number | Intersections 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
- 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
- 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
- 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
Updated 6 days ago