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.
| Endpoint | Returns |
|---|---|
GET /vehicles | Vehicles 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}/position | The latest known position. |
GET /vehicles/{id}/journeys?from=…&till=… | Journeys (and with include_stops=true stops) inside a window of at most 31 days. |
curl https://fleetalyse.co.uk/tracking-api/v1/vehicles/veh_…/position \
-H "Authorization: Bearer $FLEETALYSE_TRACKING_KEY"{
"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
| Field | Unit / format | Notes |
|---|---|---|
recorded_at, started_at, ended_at | ISO 8601, UTC (Z) | When the device recorded the data, not when you asked. |
latitude, longitude | WGS84 decimal degrees | null when the device has no fix. |
speed_kmh, average_speed_kmh, max_speed_kmh | km/h, integers | |
heading_deg | degrees clockwise from north, 0–359 | |
distance_m | metres, integer | null for stops and when not reported. |
duration_s, age_seconds | seconds | |
movement | driving, 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
activeordeactivation_pending(charging still running). Otherwise/positionanswers409 SERVICE_INACTIVEwithdetails.service_status; the vehicle stays in/vehicleswith 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.
| Plan | History |
|---|---|
basic | 90 days |
lite | 90 days |
pro | 365 days |
pro_hgv | 365 days |
{
"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
503withRetry-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 infrastructureLong-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.