Skip to main content
Fleetalyse
Partner API & Tracking API

Tracking API

Vehicles, positions and journeys for your own interface.

The Fleetalyse Partner Programme is running as a pilot. The API documented here is available to approved partners; you can build against test mode as soon as your partner account is open. About partnering with Fleetalyse

The Tracking API gives your server read-only access to vehicles, their latest position and their journeys, for the fleets a tracking-data key (ftk_…) may see. Use it to show tracking inside your own product without a white-label arrangement.

EndpointReturns
GET /vehiclesVehicles with service status. include=position adds last_position for vehicles whose service is active. Filters: fleet_id, service_status (tracking = active or deactivation pending, none = no service).
GET /vehicles/{id}One vehicle (veh_…), its device, service and what tracking data is available.
GET /vehicles/{id}/positionThe latest known position.
GET /vehicles/{id}/journeys?from=…&till=…Journeys (and with include_stops=true stops) inside a window of at most 31 days.
Shell
curl https://fleetalyse.co.uk/tracking-api/v1/vehicles/veh_…/position \
  -H "Authorization: Bearer $FLEETALYSE_TRACKING_KEY"

Position
{
  "object": "position",
  "vehicle_id": "veh_7Kq…",
  "device_id": "dev_example_01",
  "recorded_at": "2026-10-01T09:29:41Z",
  "latitude": 52.056721,
  "longitude": 1.148203,
  "speed_kmh": 46,
  "heading_deg": 212,
  "movement": "driving",
  "age_seconds": 19,
  "stale": false,
  "retrieved_at": "2026-10-01T09:30:00Z",
  "max_cache_age_seconds": 30,
  "simulated": false
}

Fields and units

FieldUnit / formatNotes
recorded_at, started_at, ended_atISO 8601, UTC (Z)When the device recorded the data, not when you asked.
latitude, longitudeWGS84 decimal degreesnull when the device has no fix.
speed_kmh, average_speed_kmh, max_speed_kmhkm/h, integers
heading_degdegrees clockwise from north, 0–359
distance_mmetres, integernull for stops and when not reported.
duration_s, age_secondsseconds
movementdriving, standing, no_gps, no_data, unknown

A value the hardware did not report is null — never zero. A position older than 10 minutes has stale: true; show it as the last known position, not the current one.

Which vehicles and data you get

  • Live positions only while the vehicle's service is active or deactivation_pending (charging still running). Otherwise /position answers 409 SERVICE_INACTIVE with details.service_status; the vehicle stays in /vehicles with its status and no position.
  • A vehicle whose fleet is outside the key's fleets answers 404.
  • Transferred or released devices never expose another owner's or another fleet's history.

History and clipping

Journeys are limited to (a) the periods the vehicle's service was active under your account, (b) your plan's history and (c) the time the device was fitted to that vehicle. The response lists the windows it served and clipped: true when your request was narrowed. A journey is returned when it starts and ends inside a window.

PlanHistory
basic90 days
lite90 days
pro365 days
pro_hgv365 days
Journeys
{
  "object": "list",
  "vehicle_id": "veh_7Kq…",
  "from": "2026-10-01T00:00:00Z",
  "till": "2026-10-08T00:00:00Z",
  "windows": [{ "from": "2026-10-03T12:00:00Z", "till": "2026-10-08T00:00:00Z" }],
  "clipped": true,
  "history_days": 365,
  "data": [
    {
      "object": "journey", "type": "journey",
      "started_at": "2026-10-03T17:00:00Z", "ended_at": "2026-10-03T17:40:00Z", "duration_s": 2400,
      "start": { "latitude": 52.05, "longitude": 1.14 }, "end": { "latitude": 52.07, "longitude": 1.19 },
      "distance_m": 18342, "average_speed_kmh": 38, "max_speed_kmh": 81, "device_id": "dev_example_01"
    }
  ],
  "has_more": false,
  "simulated": false
}

Freshness, caching and cadence

  • Positions are as recent as the device's last report; devices report more often while moving.
  • Fleetalyse caches tracking-platform reads for at most 30 seconds per key. Polling a vehicle more often than every 30 seconds returns the same data.
  • Device connectivity on the Partner API (online/offline/unknown) is refreshed about every 5 minutes: online means data within the last 10 minutes.
  • Authorisation is checked on every request: a deactivation, transfer, rotation or revocation takes effect at once (and always within 60 seconds).
  • Each fleet allows 4 concurrent reads; more answer 503 with Retry-After. The per-key limit is 1200 requests a minute.

Keep keys on your server

End customer's browser / mobile app
        ↓  authenticated request to YOUR server
Your server checks which fleet this customer may see
        ↓  scoped server-to-server request (tracking-data key)
Fleetalyse Tracking API
        ↓  private account mapping and authorised data retrieval
Tracking infrastructure

Long-lived keys stay on your server. Never embed a tracking-data key — least of all one that covers several customers' fleets — in website JavaScript, a public mobile app or a downloadable configuration. Your own application must also make sure each of your customers only sees their own fleet.

Permitted use

Use tracking data to provide your service to the customer who owns the fleet, under your agreement with them and your data-protection obligations. Do not resell raw data, do not collect data for vehicles after their service ends, and minimise personal data in logs.

WhatsApp us