Send GPS positions and odometer readings
Fleet has built-in connectors for Geotab, Motive, Tracksolid Pro and Pilot. For any other platform (or your own devices), send positions and meter readings through the API. They appear on the live map, in position history, and drive meter-based service reminders.
Scopes: telematics:write, meter_entries:write, vehicles:read.
1. Map devices to vehicles
Section titled “1. Map devices to vehicles”Keep a map from your device id to the Fleet vehicle id. Build it once by looking vehicles up by vin,
license_plate or vehicle_number:
curl "https://api.get-fleet.com/v1/vehicles?vin=MR0FB8CD3P0123456" -H "Authorization: Bearer $FLEET_API_KEY"2. Send positions
Section titled “2. Send positions”Buffer positions and send them every 10 to 30 seconds, up to 1,000 per request, for any mix of vehicles:
curl https://api.get-fleet.com/v1/vehicle_positions \ -H "Authorization: Bearer $FLEET_API_KEY" -H "Content-Type: application/json" \ -d '{ "data": [ { "vehicle_id": "6f1c2b0e-8a43-4c1e-9d55-0c2b7f3e9a10", "recorded_at": "2026-11-01T08:30:05Z", "latitude": -1.2864, "longitude": 36.8172, "speed_kmh": 42, "heading": 90, "ignition": true }, { "vehicle_id": "7f1c2b0e-8a43-4c1e-9d55-0c2b7f3e9a10", "recorded_at": "2026-11-01T08:30:07Z", "latitude": -4.0435, "longitude": 39.6682, "speed_kmh": 0 } ] }'The response is 202 with {"object": "vehicle_position_batch", "accepted": 2}. A batch is all or nothing: if
any vehicle_id isn’t one of your vehicles, nothing is stored and you get 422 reference_not_found naming it.
3. Send odometer readings
Section titled “3. Send odometer readings”Positions don’t move the odometer. Send readings as meter entries, at most every
few minutes per vehicle (each one updates the vehicle and can trigger service reminders). Use your event id as
external_id, so a resend never creates a duplicate:
curl https://api.get-fleet.com/v1/meter_entries/batch \ -H "Authorization: Bearer $FLEET_API_KEY" -H "Content-Type: application/json" \ -d '{"data": [{"vehicle_id": "6f1c…", "value": 48210.5, "recorded_at": "2026-11-01T08:30:05Z", "external_id": "evt_918273"}]}'4. Read positions back
Section titled “4. Read positions back”- Latest position:
GET /v1/vehicles/{id}/location - History:
GET /v1/vehicle_positions?vehicle_id=…&recorded_from=2026-11-01T00:00:00Z&recorded_to=2026-11-02T00:00:00Z&sort=recorded_at
History includes positions from every source, built-in connectors included; source says which.