Daily metrics feed
One row for each vehicle and each fleet-local day, for the whole fleet. Part of BI analytics in the documentation.
GET/v1/analytics/daily
Returns one row for each vehicle-day that has a computed daily summary. Days without a computed summary do not appear. Rows sort by day, then device id.
Use this feed for distance, drive time, idle time, and speed reports by day, by vehicle, or by driver.
| Parameter | Required | Notes |
|---|---|---|
since | Yes | First fleet-local date, in YYYY-MM-DD form. |
until | Yes | Last fleet-local date, in YYYY-MM-DD form. Both bounds are inclusive. The range cannot exceed 366 days. |
limit | No | Rows per page, from 1 to 5000. Default 1000. |
offset | No | First row to return. Default 0. Use next_ from the answer to read the next page. |
Send an API key with the analytics:read scope in the Authorization header. A key reads data for its organization only. See BI analytics for the rules that all feeds share.
Example
Request:
curl 'https://filodos.gr/filodos-dashboard/api/scoring/v1/analytics/daily?since=2026-10-01&until=2026-10-31&limit=5000' \
-H "Authorization: Bearer filodos_REPLACE_WITH_YOUR_KEY"
Answer (200). The example shows two rows of 62. A real page has up to limit rows. next_offset is null on the last page.
{
"rows": [
{
"device_id": 43,
"vehicle_name": "IKX-1234",
"driver_names": "Nikos Papadopoulos",
"day": "2026-10-01",
"trip_count": 4,
"distance_km": 128.4,
"drive_hours": 3.2,
"idle_hours": 0.4,
"night_km": 0.0,
"overspeed_km": 2.1,
"overspeed_seconds": 96.0,
"max_over_limit_kmh": 18.0,
"over_mild_km": 1.5,
"over_moderate_km": 0.5,
"over_severe_km": 0.1,
"overspeed_implied_km": 0.0,
"unknown_limit_km": 6.3,
"harsh_brake_count": 1,
"harsh_accel_count": 0,
"signal_harsh_count": 0,
"longest_drive_minutes": 74.0,
"fatigue_flag": false
},
{
"device_id": 44,
"vehicle_name": "IKY-5678",
"driver_names": "Anna Georgiou, Kostas Nikolaou",
"day": "2026-10-01",
"trip_count": 6,
"distance_km": 212.9,
"drive_hours": 5.1,
"idle_hours": 0.9,
"night_km": 14.2,
"overspeed_km": 0.0,
"overspeed_seconds": 0.0,
"max_over_limit_kmh": 0.0,
"over_mild_km": 0.0,
"over_moderate_km": 0.0,
"over_severe_km": 0.0,
"overspeed_implied_km": 0.0,
"unknown_limit_km": 9.8,
"harsh_brake_count": 0,
"harsh_accel_count": 2,
"signal_harsh_count": 0,
"longest_drive_minutes": 281.0,
"fatigue_flag": true
}
],
"total": 62,
"limit": 5000,
"offset": 0,
"next_offset": null
}
In Excel
- Make the query in the Excel Power Query procedure.
- Set
Feed = "daily"in the query. - Select Close & Load.
The sheet then has one row for each row in the answer. A null value gives an empty cell. Some of the columns of the example look like this:
vehicle_ | driver_ | day | trip_ | distance_ | drive_ | idle_ | fatigue_ |
|---|---|---|---|---|---|---|---|
| IKX-1234 | Nikos Papadopoulos | 2026-10-01 | 4 | 128.4 | 3.2 | 0.4 | FALSE |
| IKY-5678 | Anna Georgiou, Kostas Nikolaou | 2026-10-01 | 6 | 212.9 | 5.1 | 0.9 | TRUE |
Fields
Each row has these fields, in this order. A timestamp is ISO 8601 Europe/Athens time with an explicit offset.
| Field | Type | Meaning |
|---|---|---|
device_ | integer | The Filodos device id. Use it to relate this table to the other feeds. |
vehicle_ | text or null | The vehicle name, usually the plate. null when the live device list is not available. |
driver_ | text or null | All drivers linked to the vehicle during that day, with a comma between names. null when no driver was linked. |
day | date | The fleet-local (Europe/Athens) calendar day. |
trip_ | integer | The number of trips in the day. |
distance_ | number | The distance driven, in kilometres. |
drive_ | number | The total trip time, in hours. It includes idle time. |
idle_ | number | The time with the ignition on and a speed below 3 km/h, in hours. |
night_ | number | The distance driven from 22:00 to 06:00 local time. |
overspeed_ | number | The distance driven above a posted speed limit. |
overspeed_ | number | The time above a posted speed limit, in seconds. |
max_ | number | The largest speed above the limit, in km/h. |
over_ | number | Overspeed distance at 10 km/h or less above a posted limit. |
over_ | number | Overspeed distance at more than 10 and up to 20 km/h above a posted limit. |
over_ | number | Overspeed distance at more than 20 km/h above a posted limit. |
overspeed_ | number | Overspeed distance against a limit that Filodos found from the road type. It is not in overspeed_. |
unknown_ | number | Distance on roads without a known speed limit. |
harsh_ | integer | Harsh braking events that Filodos found from the speed data. |
harsh_ | integer | Harsh acceleration events that Filodos found from the speed data. |
signal_ | integer | The harsh braking events near a traffic signal. They are also in harsh_. |
longest_ | number | The longest continuous drive without a 15-minute break. |
fatigue_ | boolean | true when a continuous drive was longer than 4.5 hours. |
The feed reads stored daily summaries. It does not run analysis or create missing summaries. The dashboard or the nightly report workflow must compute each day first.
Errors
An error answer has a JSON body with a detail field.
| Status | Cause |
|---|---|
401 | The Authorization header is missing, or the key is unknown or revoked. |
403 | The key does not have the analytics:read scope, or the caller is a driver login. |
422 | until is before since, the range is more than 366 days, a date is not in YYYY-MM-DD form, or limit or offset is out of range. |