curl --request GET \
--url https://api.catenatelematics.com/v2/telematics/vehicle-locations \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.catenatelematics.com/v2/telematics/vehicle-locations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.catenatelematics.com/v2/telematics/vehicle-locations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.catenatelematics.com/v2/telematics/vehicle-locations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}require 'uri'
require 'net/http'
url = URI("https://api.catenatelematics.com/v2/telematics/vehicle-locations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.get("https://api.catenatelematics.com/v2/telematics/vehicle-locations")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.catenatelematics.com/v2/telematics/vehicle-locations");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.catenatelematics.com/v2/telematics/vehicle-locations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"items": [
{
"fleet_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"connection_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_name": "ada",
"source_id": "<string>",
"source_data_hash": "<string>",
"fleet_ref": "<string>",
"deleted_at": "2023-11-07T05:31:56Z",
"tsp_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tsp_slug": "<string>",
"source_data": {},
"occurred_at": "2023-11-07T05:31:56Z",
"execution_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"schedule_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"extras": {},
"vehicle_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"driver_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"co_driver_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"associated_driver_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_driver_id": "<string>",
"source_vehicle_id": "<string>",
"source_co_driver_id": "<string>",
"location": {
"type": "Point",
"coordinates": {
"[0]": 123,
"[1]": 123
},
"bbox": {
"[0]": 123,
"[1]": 123,
"[2]": 123,
"[3]": 123
}
},
"h3_index_11": 123,
"speed": 123,
"odometer": 123,
"fuel_level": 123,
"fuel_value": 123,
"fuel_occurred_at": "2023-11-07T05:31:56Z",
"engine_hours": 123,
"oil_pressure": 123,
"coolant_temperature": 123,
"inferred_address": {
"city": "<string>",
"province": "<string>",
"country_code": "<string>"
},
"heading": 123,
"speed_unit": "m/s",
"odometer_unit": "m",
"fuel_value_unit": "m3",
"oil_pressure_unit": "Pa",
"coolant_temperature_unit": "K",
"vehicle": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vehicle_name": "<string>",
"model_type": "<string>",
"model_year": 123,
"vin": "<string>",
"license_plate_region": "<string>",
"license_plate_country": "<string>",
"license_plate_number": "<string>",
"eld_id": "<string>",
"eld_serial_number": "<string>",
"source_id": "<string>",
"external_id": "<string>"
},
"driver": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"username": "<string>",
"employee_number": "<string>",
"source_id": "<string>",
"status": "<string>",
"phone_number": "<string>",
"license_country": "<string>",
"license_region": "<string>",
"license_number": "<string>",
"license_expiration": "2023-12-25"
},
"co_driver": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"username": "<string>",
"employee_number": "<string>",
"source_id": "<string>",
"status": "<string>",
"phone_number": "<string>",
"license_country": "<string>",
"license_region": "<string>",
"license_number": "<string>",
"license_expiration": "2023-12-25"
}
}
],
"total": 1,
"current_page": "<string>",
"current_page_backwards": "<string>",
"previous_page": "<string>",
"next_page": "<string>"
}{
"code": 400,
"message": "Bad Request",
"detail": "<string>"
}{
"code": 401,
"message": "Unauthorized",
"detail": "<string>"
}{
"code": 403,
"message": "Forbidden",
"detail": "<string>"
}{
"code": 404,
"message": "Not Found",
"detail": "<string>"
}{
"code": 405,
"message": "Method Not Allowed",
"detail": "<string>"
}{
"code": 409,
"message": "Conflict",
"detail": "<string>"
}{
"code": 422,
"message": "Invalid Request Body",
"detail": [
{
"path": "<string>",
"input": "<string>",
"message": "<string>",
"error_type": "<string>"
}
]
}{
"code": 429,
"message": "Too Many Requests",
"detail": {
"retry_after_seconds": 123,
"message": "<string>"
}
}{
"message": "Internal Server Error"
}{
"code": 501,
"message": "Not Implemented",
"detail": "<string>"
}List Vehicle Locations
Get a paginated list of vehicle locations accessible to your organization.
curl --request GET \
--url https://api.catenatelematics.com/v2/telematics/vehicle-locations \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.catenatelematics.com/v2/telematics/vehicle-locations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.catenatelematics.com/v2/telematics/vehicle-locations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.catenatelematics.com/v2/telematics/vehicle-locations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}require 'uri'
require 'net/http'
url = URI("https://api.catenatelematics.com/v2/telematics/vehicle-locations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.get("https://api.catenatelematics.com/v2/telematics/vehicle-locations")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.catenatelematics.com/v2/telematics/vehicle-locations");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.catenatelematics.com/v2/telematics/vehicle-locations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"items": [
{
"fleet_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"connection_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_name": "ada",
"source_id": "<string>",
"source_data_hash": "<string>",
"fleet_ref": "<string>",
"deleted_at": "2023-11-07T05:31:56Z",
"tsp_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tsp_slug": "<string>",
"source_data": {},
"occurred_at": "2023-11-07T05:31:56Z",
"execution_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"schedule_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"extras": {},
"vehicle_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"driver_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"co_driver_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"associated_driver_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_driver_id": "<string>",
"source_vehicle_id": "<string>",
"source_co_driver_id": "<string>",
"location": {
"type": "Point",
"coordinates": {
"[0]": 123,
"[1]": 123
},
"bbox": {
"[0]": 123,
"[1]": 123,
"[2]": 123,
"[3]": 123
}
},
"h3_index_11": 123,
"speed": 123,
"odometer": 123,
"fuel_level": 123,
"fuel_value": 123,
"fuel_occurred_at": "2023-11-07T05:31:56Z",
"engine_hours": 123,
"oil_pressure": 123,
"coolant_temperature": 123,
"inferred_address": {
"city": "<string>",
"province": "<string>",
"country_code": "<string>"
},
"heading": 123,
"speed_unit": "m/s",
"odometer_unit": "m",
"fuel_value_unit": "m3",
"oil_pressure_unit": "Pa",
"coolant_temperature_unit": "K",
"vehicle": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vehicle_name": "<string>",
"model_type": "<string>",
"model_year": 123,
"vin": "<string>",
"license_plate_region": "<string>",
"license_plate_country": "<string>",
"license_plate_number": "<string>",
"eld_id": "<string>",
"eld_serial_number": "<string>",
"source_id": "<string>",
"external_id": "<string>"
},
"driver": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"username": "<string>",
"employee_number": "<string>",
"source_id": "<string>",
"status": "<string>",
"phone_number": "<string>",
"license_country": "<string>",
"license_region": "<string>",
"license_number": "<string>",
"license_expiration": "2023-12-25"
},
"co_driver": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"username": "<string>",
"employee_number": "<string>",
"source_id": "<string>",
"status": "<string>",
"phone_number": "<string>",
"license_country": "<string>",
"license_region": "<string>",
"license_number": "<string>",
"license_expiration": "2023-12-25"
}
}
],
"total": 1,
"current_page": "<string>",
"current_page_backwards": "<string>",
"previous_page": "<string>",
"next_page": "<string>"
}{
"code": 400,
"message": "Bad Request",
"detail": "<string>"
}{
"code": 401,
"message": "Unauthorized",
"detail": "<string>"
}{
"code": 403,
"message": "Forbidden",
"detail": "<string>"
}{
"code": 404,
"message": "Not Found",
"detail": "<string>"
}{
"code": 405,
"message": "Method Not Allowed",
"detail": "<string>"
}{
"code": 409,
"message": "Conflict",
"detail": "<string>"
}{
"code": 422,
"message": "Invalid Request Body",
"detail": [
{
"path": "<string>",
"input": "<string>",
"message": "<string>",
"error_type": "<string>"
}
]
}{
"code": 429,
"message": "Too Many Requests",
"detail": {
"retry_after_seconds": 123,
"message": "<string>"
}
}{
"message": "Internal Server Error"
}{
"code": 501,
"message": "Not Implemented",
"detail": "<string>"
}only_latest=true, the from_datetime and to_datetime query parameters are not applied. Only the most recent location per vehicle is returned regardless of the date range specified.only_latest=false, exactly one vehicle_ids value or one driver_ids value must be specified. To retrieve location history for multiple vehicles or drivers, make separate requests for each.Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Query Parameters
If true, only the latest known location per vehicle is returned.
If true, each location will include a vehicle object with basic vehicle information. Locations without a matching vehicle will have vehicle set to null.
If true, each location will include driver and co_driver objects with basic driver information. Locations without a matching driver/co-driver will have that field set to null.
Limit results to specific fleets using Catena's fleet IDs. For your own fleet identifiers, use fleet_refs instead To specify multiple values, repeat the parameter for each value (e.g., ?fleet_ids=id1&fleet_ids=id2).
100Limit results to specific fleets using your organization's fleet reference identifiers. To specify multiple values, repeat the parameter for each value (e.g., ?fleet_refs=ref1&fleet_refs=ref2).
100Limit results to a specific provider connection. This is the UUID assigned by Catena when your fleet connects to a TSP.
Return only records that occurred on or after this date and time. Format: ISO 8601 (UTC) Applies filter: occurred_at >= from_datetime Default value: now() - 1 day Restriction: to_datetime - from_datetime cannot exceed 45 days
"2026-10-18T22:45:52.466794Z"
Return only records that occurred before this date and time. Format: ISO 8601 (UTC) Applies filter: occurred_at < to_datetime Default value: now() Restriction: to_datetime - from_datetime cannot exceed 45 days
"2026-10-19T22:45:52.466929Z"
Limit results to specific drivers. Maximum: 100 IDs To specify multiple values, repeat the parameter for each value (e.g., ?driver_ids=id1&driver_ids=id2).
100Limit results to specific vehicles. Maximum: 100 IDs To specify multiple values, repeat the parameter for each value (e.g., ?vehicle_ids=id1&vehicle_ids=id2).
100Include the raw data from the telematics provider. Useful for auditing or accessing fields not normalized by Catena
The name of the field to sort results by. If not provided, results will be ordered by occurred_at.
The order of sorting, either asc for ascending or desc for descending. Defaults to asc if sort_by is provided without sort_order.
asc, desc Cursor for the next page
Page size
1 <= x <= 1000Response
Successful Response
Show child attributes
Show child attributes
x >= 0Cursor to refetch the current page
Cursor to refetch the current page starting from the last item
Cursor for the previous page
Cursor for the next page
Was this page helpful?