Filodos

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.

ParameterRequiredNotes
sinceYesFirst fleet-local date, in YYYY-MM-DD form.
untilYesLast fleet-local date, in YYYY-MM-DD form. Both bounds are inclusive. The range cannot exceed 366 days.
limitNoRows per page, from 1 to 5000. Default 1000.
offsetNoFirst row to return. Default 0. Use next_offset 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

  1. Make the query in the Excel Power Query procedure.
  2. Set Feed = "daily" in the query.
  3. 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_namedriver_namesdaytrip_countdistance_kmdrive_hoursidle_hoursfatigue_flag
IKX-1234Nikos Papadopoulos2026-10-014128.43.20.4FALSE
IKY-5678Anna Georgiou, Kostas Nikolaou2026-10-016212.95.10.9TRUE

Fields

Each row has these fields, in this order. A timestamp is ISO 8601 Europe/Athens time with an explicit offset.

FieldTypeMeaning
device_idintegerThe Filodos device id. Use it to relate this table to the other feeds.
vehicle_nametext or nullThe vehicle name, usually the plate. null when the live device list is not available.
driver_namestext or nullAll drivers linked to the vehicle during that day, with a comma between names. null when no driver was linked.
daydateThe fleet-local (Europe/Athens) calendar day.
trip_countintegerThe number of trips in the day.
distance_kmnumberThe distance driven, in kilometres.
drive_hoursnumberThe total trip time, in hours. It includes idle time.
idle_hoursnumberThe time with the ignition on and a speed below 3 km/h, in hours.
night_kmnumberThe distance driven from 22:00 to 06:00 local time.
overspeed_kmnumberThe distance driven above a posted speed limit.
overspeed_secondsnumberThe time above a posted speed limit, in seconds.
max_over_limit_kmhnumberThe largest speed above the limit, in km/h.
over_mild_kmnumberOverspeed distance at 10 km/h or less above a posted limit.
over_moderate_kmnumberOverspeed distance at more than 10 and up to 20 km/h above a posted limit.
over_severe_kmnumberOverspeed distance at more than 20 km/h above a posted limit.
overspeed_implied_kmnumberOverspeed distance against a limit that Filodos found from the road type. It is not in overspeed_km.
unknown_limit_kmnumberDistance on roads without a known speed limit.
harsh_brake_countintegerHarsh braking events that Filodos found from the speed data.
harsh_accel_countintegerHarsh acceleration events that Filodos found from the speed data.
signal_harsh_countintegerThe harsh braking events near a traffic signal. They are also in harsh_brake_count.
longest_drive_minutesnumberThe longest continuous drive without a 15-minute break.
fatigue_flagbooleantrue 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.

StatusCause
401The Authorization header is missing, or the key is unknown or revoked.
403The key does not have the analytics:read scope, or the caller is a driver login.
422until 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.