curl --request GET \
--url https://api.catenatelematics.com/v2/visibility/loads/{load_id}/tracking \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.catenatelematics.com/v2/visibility/loads/{load_id}/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/{load_id}/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/{load_id}/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/{load_id}/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/{load_id}/tracking")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.catenatelematics.com/v2/visibility/loads/{load_id}/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/{load_id}/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;
}{
"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"
}
]
}{
"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>"
}🧪 Get Load Tracking
Retrieve the vehicle carrying a load you posted and where it last reported. 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/{load_id}/tracking \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.catenatelematics.com/v2/visibility/loads/{load_id}/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/{load_id}/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/{load_id}/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/{load_id}/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/{load_id}/tracking")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.catenatelematics.com/v2/visibility/loads/{load_id}/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/{load_id}/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;
}{
"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"
}
]
}{
"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.
Path Parameters
Response
Successful Response
Where a load stands right now.
Catena identifier of the load.
Your reference for the load, as posted.
How far to trust last_position. See the values for what each means.
live, stale, no_signal, not_shared, unassigned, unknown The vehicle carrying the load. If you sent vehicle identifiers, the best vehicle they matched, or null when none matched a vehicle you can see. If you sent none, the best vehicle matched from location data, or null when no vehicle has been seen at the origin yet, none matched well enough, or none is in a fleet that shares vehicle and location data with you.
Show child attributes
Show child attributes
The last position the assigned vehicle reported, however long ago. Null when there is no vehicle_assignment, the vehicle has not reported a position, or the vehicle's fleet does not share location data with you.
Show child attributes
Show child attributes
The load's stops in travel order, origin first and destination last. Each is meant to say when the vehicle is expected to arrive and leave (as you posted them) and when it actually did, but actual times are not recorded yet.
Show child attributes
Show child attributes
Was this page helpful?