> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://catena.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://catena.ferndocs.com/_mcp/server.

# List vehicle summaries

GET https://api.catenatelematics.com/v2/telematics/analytics/vehicles

**Deprecated.** Use `/v2/intelligence/analytics/vehicles` instead. Retrieve vehicle profiles with static attributes and latest telemetry snapshot for asset inventories.

Reference: https://catena.ferndocs.com/api-reference/telematics/analytics-deprecated/list-vehicle-summaries

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Query parameters

- `fleet_ids` (list of string, optional, nullable) — 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`).
- `fleet_refs` (list of string, optional, nullable) — Limit 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`).
- `connection_id` (string, optional, nullable) — Limit results to a specific provider connection. This is the UUID assigned by Catena when your fleet connects to a TSP.
- `vehicle_ids` (list of string, optional, nullable) — Limit 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`).
- `source_ids` (list of string, optional, nullable) — Limit results to specific resources using the identifier provided by the TSP. **Maximum:** 100 IDs To specify multiple values, repeat the parameter for each value (e.g., `?source_ids=id1&source_ids=id2`).
- `sort_by` (string, optional, nullable) — The name of the field to sort results by. If not provided, results will be ordered by `occurred_at`.
- `sort_order` (enum, optional, default: asc) — The order of sorting, either `asc` for ascending or `desc` for descending. Defaults to `asc` if `sort_by` is provided without `sort_order`.
  - Allowed values: `asc`, `desc`
- `cursor` (string, optional, nullable) — Cursor for the next page
- `size` (integer, optional, default: 300) — Page size

## Response

### 200

Successful Response

- `items` (list of VehicleSummary, required)
- `total` (integer, required)
- `current_page` (string, optional, nullable) — Cursor to refetch the current page
- `current_page_backwards` (string, optional, nullable) — Cursor to refetch the current page starting from the last item
- `previous_page` (string, optional, nullable) — Cursor for the previous page
- `next_page` (string, optional, nullable) — Cursor for the next page

## Errors

### 400 Bad Request Error

Bad Request

- `code` (integer, optional, default: 400)
- `message` (string, optional, default: Bad Request)
- `detail` (string, optional, nullable)

### 401 Unauthorized Error

Unauthorized

- `code` (integer, optional, default: 401)
- `message` (string, optional, default: Unauthorized)
- `detail` (string, optional, nullable)

### 403 Forbidden Error

Forbidden

- `code` (integer, optional, default: 403)
- `message` (string, optional, default: Forbidden)
- `detail` (string, optional, nullable)

### 404 Not Found Error

Not Found

- `code` (integer, optional, default: 404)
- `message` (string, optional, default: Not Found)
- `detail` (string, optional, nullable)

### 405 Method Not Allowed Error

Method Not Allowed

- `code` (integer, optional, default: 405)
- `message` (string, optional, default: Method Not Allowed)
- `detail` (string, optional, nullable)

### 409 Conflict Error

Conflict

- `code` (integer, optional, default: 409)
- `message` (string, optional, default: Conflict)
- `detail` (string, optional, nullable)

### 422 Unprocessable Entity Error

Unprocessable Entity

- `code` (integer, optional, default: 422)
- `message` (string, optional, default: Invalid Request Body)
- `detail` (list of ValidationErrorDetail, optional, nullable)

### 429 Too Many Requests Error

Too Many Requests

- `code` (integer, optional, default: 429)
- `message` (string, optional, default: Too Many Requests)
- `detail` (RetryAfterDetail, optional, nullable)

### 500 Internal Server Error

Internal Server Error

- `message` (string, optional, default: Internal Server Error)

### 501 Not Implemented Error

Not Implemented

- `code` (integer, optional, default: 501)
- `message` (string, optional, default: Not Implemented)
- `detail` (string, optional, nullable)

## Types

### VehicleSummary

Vehicle profile with static attributes and latest telemetry snapshot. Use this to build asset inventories, maintenance dashboards, or fleet utilization reports. Combines registration details with the most recent location and engine data.

- `fleet_id` (string, required) — Catena fleet identifier.
- `fleet_ref` (string, required, nullable) — Your assigned reference ID for this vehicle's fleet.
- `connection_id` (string, required) — Catena connection identifier through which this vehicle was ingested.
- `vehicle_id` (string, required) — Unique Catena identifier for the vehicle.
- `tsp_id` (string, required, nullable) — Unique identifier of the TSP at Catena Telematics from which this record was ingested.
- `tsp_slug` (string, required, nullable) — Human readable slug of the TSP at Catena Telematics from which this record was ingested.
- `source_name` (enum, required, nullable) — The underlying telematics platform that provided this data (e.g., `samsara`, `motive`, `hos247`). Note: Some platforms like `hos247` offer white-labeling, so multiple TSPs may share the same source_name — use `tsp_id` or `tsp_slug` to identify the specific ELD provider.
  - Allowed values: `ada`, `ai_eld`, `air_eld`, `alfa_eld`, `alpha_eld`, `als`, `anytrek_pro`, `anytrek_classic`, `apex_eld`, `apollo`, `apollocloud`, `ascend`, `att`, `awaregps`, `azuga`, `bigroad`, `bluehorse_eld`, `blueinktech`, `bouncie`, `budgetgps`, `catena_simulator`, `captain_eld`, `carrier_lynx`, `chronos`, `club_eld`, `cogo_eld`, `counting_trucks_eld`, `cyntrx`, `digital_eld`, `dragon_eld`, `dreyev`, `drive_hos`, `drive_hos_v2`, `driver_tech`, `dsg_elogs`, `dynamic_eld`, `eighteighteight_eld`, `eld_88`, `eld_books`, `eld_mandate`, `eld_mandate_prime`, `eroad`, `eva_eld`, `evo_eld`, `expressway_eld`, `extreme_eld`, `ezlogz`, `ez_lynk`, `factor_eld`, `firstgate`, `fleetcomplete`, `fleetcompletehub`, `fleethunt`, `fleetpulse`, `fleetsharp`, `fleetup`, `fm`, `fordpro`, `forwardthinking`, `forza_eld`, `geotab`, `gpsinsight`, `gpstab`, `gpstrackit`, `grand_eld`, `greenlight`, `groundhog`, `hcss`, `hos247`, `hutch`, `intellishift`, `ironman_eld`, `isaac`, `jjkeller`, `kinexaiot`, `knight_eld`, `konexial`, `lioneight`, `linxup`, `loop_eld`, `lucid_eld`, `luna_eld`, `lytx`, `lytxv3`, `mapon`, `matrack`, `maven`, `mdm_eld`, `michelin_connected_fleet`, `mobilefleet`, `moonlight_eld`, `motion_eld`, `motive`, `my_drivebook`, `my_logs_eld`, `nero`, `netradyne`, `new_eld_world`, `nextgen_eld`, `nextraq`, `nexus_eld`, `omnitracs`, `1sew_eld`, `onestep`, `ontime_eld`, `optima`, `optimus_tracker`, `orbcomm`, `orient_eld`, `ozod_eld`, `panda_eld`, `patriot_eld`, `payd`, `peak_eld`, `pedigree`, `peoplenet`, `phillips_connect`, `phoenix`, `pop_eld`, `prologs`, `proride_eld`, `qualitylogs_eld`, `randmcnally`, `rastrac`, `raven`, `redfox`, `regulog_eld`, `ridehub`, `rigbot`, `roadeazy`, `roadready`, `rock_eld`, `rollingtrans`, `routemate`, `route_one_eld`, `royal_eld`, `safelane`, `samsara`, `selectivedrive`, `simba_eld`, `skybitz`, `smart_elds`, `sparkle_eld`, `spireon`, `sts_eld`, `sun_eld`, `surfsight`, `swift`, `switchboard`, `synergy_eld`, `teletracnavman`, `teletracnavman_director`, `telogis`, `tenna`, `teslemetry`, `thermo_king`, `think`, `tive`, `topcompliance_eld`, `traccar`, `trackease_eld`, `trackpro`, `traclog`, `transflo`, `trimac`, `trimble`, `truckford`, `truckspy`, `truckx`, `trueroad_eld`, `tt`, `txt_eld`, `us_fast_eld`, `verizon_connect`, `vista_eld`, `vistracks`, `vlog_eld`, `vulcansols_eld`, `wialon`, `webfleet`, `wizefleet_eld`, `xplore_eld`, `zigzag_eld`, `zms_eld`, `zonar`, `zubie`
- `source_id` (string, required, nullable) — Vehicle identifier in the source TSP system.
- `status` (string, required, nullable) — Operational status label (e.g., 'IN_SERVICE', 'OUT_OF_SERVICE', 'MAINTENANCE').
- `vehicle_name` (string, required, nullable) — Display name or unit number for the vehicle.
- `oem` (string, required, nullable) — Manufacturer (OEM) of the vehicle.
- `model_type` (string, required, nullable) — Manufacturer model or type designation (e.g., 'Class 8 Tractor', 'Pickup').
- `model_year` (integer, required, nullable) — Model year (four-digit, e.g., 2022).
- `vin` (string, required, nullable) — Vehicle Identification Number (VIN), typically 17 characters; null if not available.
- `engine_vin` (string, required, nullable) — Engine serial number or engine VIN, if available.
- `license_plate_country` (string, required, nullable) — License plate country code (ISO-3166-1 alpha-2, e.g., 'US', 'CA').
- `license_plate_region` (string, required, nullable) — License plate region/subdivision (state/province code, e.g., 'CA', 'ON').
- `license_plate_number` (string, required, nullable) — License plate number (e.g., 'HMT-3570').
- `last_location_ping` (datetime, required, nullable) — Timestamp (UTC) of the most recent location telemetry update.
- `last_location_h3_index_11` (integer, required, nullable) — H3 geospatial index (resolution 11) of the vehicle's last known location.
- `last_location` (Point, required) — Last known location as a GeoJSON Point.
- `last_fuel_level` (double, required, nullable) — Most recent fuel level reading (remaining percentage).
- `last_odometer_reading` (double, required, nullable) — Most recent odometer reading (meters).
- `last_engine_hours` (double, required, nullable) — Most recent engine hours reading (as reported).
- `last_speed_reading` (double, required, nullable) — Most recent speed reading (meters/second).
- `last_speed_reading_unit` (enum, optional) — Unit for last_speed_reading.
  - Allowed values: `m/s`, `km/h`, `mi/h`, `kn`
- `last_odometer_reading_unit` (enum, optional) — Unit for last_odometer_reading.
  - Allowed values: `m`, `km`, `mi`, `ft`, `nmi`

### ValidationErrorDetail

- `path` (string, required)
- `input` (string, required)
- `message` (string, required)
- `error_type` (string, required)

### RetryAfterDetail

- `retry_after_seconds` (integer, required)
- `message` (string, required)

### Point

Point Model

- `type` ("Point", required)
- `coordinates` (PointCoordinates, required)
- `bbox` (PointBbox, optional, nullable)

### PointCoordinates

- Position2D: list of string
- Position3D: list of string

### PointBbox

- list of string
- list of string

## Examples

**Response**

```json
{
  "items": [
    {
      "fleet_id": "string",
      "fleet_ref": "string",
      "connection_id": "string",
      "vehicle_id": "string",
      "tsp_id": "string",
      "tsp_slug": "string",
      "source_name": "ada",
      "source_id": "string",
      "status": "string",
      "vehicle_name": "string",
      "oem": "string",
      "model_type": "string",
      "model_year": 1,
      "vin": "string",
      "engine_vin": "string",
      "license_plate_country": "string",
      "license_plate_region": "string",
      "license_plate_number": "string",
      "last_location_ping": "2024-01-15T09:30:00Z",
      "last_location_h3_index_11": 1,
      "last_location": {
        "type": "string",
        "coordinates": [
          "string"
        ],
        "bbox": [
          "string"
        ]
      },
      "last_fuel_level": 1.1,
      "last_odometer_reading": 1.1,
      "last_engine_hours": 1.1,
      "last_speed_reading": 1.1,
      "last_speed_reading_unit": "m/s",
      "last_odometer_reading_unit": "m"
    }
  ],
  "total": 1,
  "current_page": "string",
  "current_page_backwards": "string",
  "previous_page": "string",
  "next_page": "string"
}
```

**SDK Code**

```python
import requests

url = "https://api.catenatelematics.com/v2/telematics/analytics/vehicles"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.catenatelematics.com/v2/telematics/analytics/vehicles';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.catenatelematics.com/v2/telematics/analytics/vehicles"

	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(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.catenatelematics.com/v2/telematics/analytics/vehicles")

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_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.catenatelematics.com/v2/telematics/analytics/vehicles")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.catenatelematics.com/v2/telematics/analytics/vehicles', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.catenatelematics.com/v2/telematics/analytics/vehicles");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.catenatelematics.com/v2/telematics/analytics/vehicles")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```