curl --request GET \
--url https://api.catenatelematics.com/v2/visibility/loads/tracking \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.catenatelematics.com/v2/visibility/loads/tracking"
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/visibility/loads/tracking', 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/visibility/loads/tracking"
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/visibility/loads/tracking")
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/visibility/loads/tracking")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.catenatelematics.com/v2/visibility/loads/tracking");
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/visibility/loads/tracking",
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": [
{
"load_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"load_ref": "<string>",
"tracking_health": "unknown",
"vehicle_assignment": {
"source": "declared",
"agreement": "agree",
"vehicle": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vehicle_name": "<string>",
"oem": "<string>",
"model_type": "<string>",
"model_year": 123,
"vin": "<string>",
"license_plate_region": "<string>",
"license_plate_country": "<string>",
"license_plate_number": "<string>",
"is_active": true,
"status": "<string>",
"eld_id": "<string>",
"eld_serial_number": "<string>",
"source_id": "<string>",
"external_id": "<string>"
}
},
"last_position": {
"latitude": 123,
"longitude": 123,
"occurred_at": "2023-11-07T05:31:56Z"
},
"stops": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sequence": 123,
"stop_type": "origin",
"name": "<string>",
"estimated_arrival_at": "2023-11-07T05:31:56Z",
"estimated_departure_at": "2023-11-07T05:31:56Z",
"arrived_at": "2023-11-07T05:31:56Z",
"departed_at": "2023-11-07T05:31:56Z"
}
]
}
],
"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 Load Tracking
List the loads you posted, newest first, each with the vehicle carrying it and where that vehicle last reported. Filter by load_ids or load_refs. If you sent vehicle identifiers when you posted or edited the load, the vehicle is the best match for them (source is declared). If you sent none, it is the vehicle best matched from location data, provided the match is strong enough (source is inferred). For a declared vehicle, agreement says whether the vehicles matched from location data back it up. last_position is the last position that vehicle reported, and tracking_health says how far to trust it. Only vehicles in fleets that share vehicle data with you are returned, and positions only where the fleet also shares location data. Inferred vehicles need location data to be shared. Each load also lists its stops in travel order. Each stop carries the estimated arrival and departure you posted, if any. Actual arrival and departure times are not recorded yet, so they are always null.
curl --request GET \
--url https://api.catenatelematics.com/v2/visibility/loads/tracking \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.catenatelematics.com/v2/visibility/loads/tracking"
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/visibility/loads/tracking', 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/visibility/loads/tracking"
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/visibility/loads/tracking")
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/visibility/loads/tracking")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.catenatelematics.com/v2/visibility/loads/tracking");
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/visibility/loads/tracking",
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": [
{
"load_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"load_ref": "<string>",
"tracking_health": "unknown",
"vehicle_assignment": {
"source": "declared",
"agreement": "agree",
"vehicle": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vehicle_name": "<string>",
"oem": "<string>",
"model_type": "<string>",
"model_year": 123,
"vin": "<string>",
"license_plate_region": "<string>",
"license_plate_country": "<string>",
"license_plate_number": "<string>",
"is_active": true,
"status": "<string>",
"eld_id": "<string>",
"eld_serial_number": "<string>",
"source_id": "<string>",
"external_id": "<string>"
}
},
"last_position": {
"latitude": 123,
"longitude": 123,
"occurred_at": "2023-11-07T05:31:56Z"
},
"stops": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sequence": 123,
"stop_type": "origin",
"name": "<string>",
"estimated_arrival_at": "2023-11-07T05:31:56Z",
"estimated_departure_at": "2023-11-07T05:31:56Z",
"arrived_at": "2023-11-07T05:31:56Z",
"departed_at": "2023-11-07T05:31:56Z"
}
]
}
],
"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>"
}This endpoint is available for early access. The core schema is stable, but minor details — such as field names or added fields — may change before it becomes generally available. Backward compatibility is not guaranteed.
See API Stability & Versioning for details on provisional endpoints.
Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Query Parameters
Limit results to specific loads using Catena's load IDs. For your own load identifiers, use load_refs instead To specify multiple values, repeat the parameter for each value (e.g., ?load_ids=id1&load_ids=id2).
100Limit results to specific loads using your own load references, as posted. To specify multiple values, repeat the parameter for each value (e.g., ?load_refs=ref1&load_refs=ref2).
100Cursor for the next page
Page size
1 <= x <= 500Response
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?