List vehicles (V2)
Vehicles
List vehicles
Returns last-known positions for a specific set of 1–50 vehicles.
POST
List vehicles (V2)
Overview
Returns last-known positions for a specific set of vehicles. The request body is required and must contain between 1 and 50deviceId values — this limit prevents the endpoint from being used to scrape the entire fleet.
The V1 version of this endpoint is Device positions. V2 is paginated.
Rate limit: 60 requests per 60 seconds per token.
Endpoint
POST /api/v2/vehicles/list
Query parameters
Page number (1-based).
Records per page.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| vehicleIds | integer[] | Yes | deviceId values to query. Must contain between 1 and 50 entries. Returns 422 if empty or omitted. |
Response
200 OK —PagedListResult<PositionDto>
Each item in items is a full PositionDto. All fields below are present on every item.
Record & timestamps
| Field | Type | Description |
|---|---|---|
| id | integer | Synthetic record ID (derived from UTC time + vehicle ID) |
| utcTime | datetime | Record timestamp (UTC, no fractional seconds) |
| userTime | datetime | Record timestamp in the user’s timezone |
| userTimeFormatted | string | Record timestamp formatted per the user’s date format |
| Field | Type | Description |
|---|---|---|
| lat | number | Latitude |
| lng | number | Longitude |
| speed | number | Speed (km/h) |
| course | integer | Compass direction in degrees (N=0, E=90, S=180, W=270) |
| Field | Type | Description |
|---|---|---|
| ignition | boolean | Ignition state |
| odometer | number | null | GPS odometer (km) |
| voltage | number | null | Internal battery voltage (V) |
| fatigue | string | .NET TimeSpan string — time since last rest (e.g. "03:05:00") |
| engineHours | number | Cumulative engine hours |
| Field | Type | Description |
|---|---|---|
| satSignal | string | Satellite signal status label |
| satellites | integer | Number of GNSS satellites in use |
| connectionStrength | string | Cellular connection strength label |
| Field | Type | Description |
|---|---|---|
| deviceId | integer | Legacy vehicle ID |
| ignitionTime | number | null | Cumulative ignition-on time (seconds) |
| deviceName | string | Vehicle display name |
| imei | string | Device IMEI |
| vin | string | null | Vehicle Identification Number |
| Field | Type | Description |
|---|---|---|
| startMovingTime | datetime | null | When the vehicle started moving (UTC) |
| startMovingTimeUser | datetime | null | When the vehicle started moving (user timezone) |
| lastMovementTime | datetime | null | When the vehicle last stopped (UTC) |
| lastMovementTimeUser | datetime | null | When the vehicle last stopped (user timezone) |
| lastMovementTimeUserFormatted | string | null | Last movement time formatted |
| Field | Type | Description |
|---|---|---|
| drivingTime | integer | Driving time within current trip (seconds) |
| Field | Type | Description |
|---|---|---|
| fuelLevel | integer | Fuel level (%) |
| fuelVolume | number | null | Fuel volume (litres) |
| Field | Type | Description |
|---|---|---|
| address | string | Reverse-geocoded street address |
| engineEnabled | boolean | Whether engine output is enabled |
| Field | Type | Description |
|---|---|---|
| isOnline | boolean | Whether the device is currently online |
| Field | Type | Description |
|---|---|---|
| timeElapsed | number | Request processing time elapsed (seconds) |
| startedTime | datetime | Request processing start timestamp |
| endTime | datetime | Request processing end timestamp |
Error responses
| Status | Meaning |
|---|---|
| 401 | Missing or invalid token |
| 403 | Token scope does not include access to any company vehicles |
| 422 | Request body is missing, vehicleIds is empty, or contains more than 50 entries |
Authorizations
JWT Bearer token obtained from POST /api/v2/authentication/token/api-key.
Lifetime: ~24 hours (86,399 seconds). Cache the token and reuse it. Re-authenticate 5 minutes before expiry.
Scoping: API key tokens are scoped to the company the key belongs to and may restrict access to a vehicle allowlist and/or action set (see token claims).
No refresh endpoint — re-authenticate with your API key when the token expires.
Body
application/json
List of deviceId values to query. Must contain between 1 and 50 entries. Returns 422 if empty or omitted.
Required array length:
1 - 50 elementsResponse
Successful response