TrackSafe365 API

The TrackSafe365 REST API provides programmatic access to fleet telematics data including vehicles, drivers, trips, safety events, media, and real-time locations. All endpoints return JSON and use standard HTTP status codes.

Base URLs

https://api.tracksafe365.com/v2
https://sandbox-api.tracksafe365.com/v2 — Sandbox

Authentication

All requests require a Bearer token in the Authorization header. Generate API keys from the Dashboard → Settings → API Keys.

Authorization: Bearer ts365_live_xxxxxxxxxxxxxxxxxxxx

Request Format

Send request bodies as JSON with Content-Type: application/json. All timestamps use ISO 8601 format (UTC). Coordinates use decimal degrees (WGS84).

Authentication

TrackSafe365 uses API keys for authentication. All API requests must include a valid key as a Bearer token. Keys are scoped to an organization and can be restricted by permission set.

Key Types

TypePrefixDescription
Livets365_live_Access production data. Billed usage.
Sandboxts365_test_Access synthetic test data. Free, no side effects.
Restrictedts365_rk_Scoped permissions for specific resources.

Permissions

Each key is assigned permission scopes that control which resources and operations are accessible.

fleet:readfleet:write drivers:readdrivers:write safety:readmedia:read analytics:readwebhooks:admin
GET

List Vehicles

/fleet/vehicles

Returns a paginated list of all vehicles in your fleet. Supports filtering by tag, status, and attribute. Results are sorted by vehicle name by default.

Permissions Required

fleet:read

Query Parameters

ParameterTypeDescription
limit optional integer Number of results per page. Default: 100. Max: 500.
cursor optional string Pagination cursor returned in previous response.
tagIds optional string[] Comma-separated tag IDs to filter vehicles.
vehicleIds optional string[] Comma-separated vehicle IDs to retrieve specific vehicles.
parentTagId optional string Filter by parent tag and all descendants.

Response Fields

FieldTypeDescription
dataVehicle[]Array of vehicle objects.
data[].idstringUnique vehicle ID.
data[].namestringVehicle display name.
data[].vinstringVehicle Identification Number.
data[].licensePlatestringLicense plate number and state.
data[].tagsTag[]Tags associated with vehicle.
pagination.endCursorstringCursor for next page.
pagination.hasNextPagebooleanWhether more results exist.

Error Responses

401Invalid or missing API key. Check Authorization header format.
403Key lacks fleet:read permission.
429Rate limit exceeded. Retry after the Retry-After header value.

Related Endpoints

Quick Start

Make your first API call in under two minutes. Set your API key in the panel on the right, then hit Try Request.

Step 1 — Get an API Key

Navigate to Dashboard → Settings → API Keys and generate a new key. Use a sandbox key (prefix: ts365_test_) while developing.

Step 2 — Set Environment

Toggle between Sandbox and Production in the credentials panel. The base URL and key prefix update automatically.

Step 3 — Try a Request

Enter your API key in the right panel. The Authorization header auto-populates in the code snippets. Click Try Request to fire a live call against the sandbox.

Pagination

List endpoints use cursor-based pagination. Each response includes a pagination object with a cursor and a boolean indicating whether more results exist.

Cursor Pagination

FieldDescription
pagination.endCursorPass as cursor param in next request.
pagination.hasNextPagefalse when on last page.

Error Codes

The API uses standard HTTP status codes. Error responses include a JSON body with a code and message field.

HTTP Status Codes

CodeMeaning
200Success
201Created
400Bad Request — invalid parameters
401Unauthorized — invalid or missing API key
403Forbidden — insufficient permissions
404Not Found
429Rate Limit Exceeded
500Internal Server Error

Rate Limits

API rate limits are enforced per API key. Limits vary by plan and endpoint type.

Limits by Plan

PlanRequests/minRequests/day
Sandbox6010,000
Starter300100,000
Growth1,000500,000
EnterpriseCustomUnlimited
GET

Get Vehicle

/fleet/vehicles/{id}

Returns a single vehicle object by ID.

Permissions Required

fleet:read

Path Parameters

ParameterTypeDescription
idrequiredstringUnique vehicle ID.
PATCH

Update Vehicle

/fleet/vehicles/{id}

Updates mutable fields on a vehicle. Only fields provided in the request body are modified.

Permissions Required

fleet:write
GET

Vehicle Stats

/fleet/vehicles/stats

Returns aggregated statistics for fleet vehicles including odometer, engine hours, fuel consumption, and idling time.

GET

Vehicle Locations

/fleet/vehicles/locations

Returns current GPS locations and heading for all active vehicles.

GET

List Drivers

/fleet/drivers

Returns all drivers in your organization.

GET

Get Driver

/fleet/drivers/{id}

Returns a single driver by ID.

POST

Create Driver

/fleet/drivers

Creates a new driver in your organization.

PATCH

Update Driver

/fleet/drivers/{id}

Updates driver information.

GET

List Trips

/fleet/trips

Returns paginated trips for your fleet.

GET

Get Trip

/fleet/trips/{id}

Returns full trip details including route polyline.

GET

List Safety Events

/safety/events

Returns safety events including harsh braking, acceleration, cornering, and speeding.

GET

Get Safety Event

/safety/events/{id}

Returns a single safety event with full metadata and associated media.

PATCH

Update Safety Event

/safety/events/{id}

Update coaching status or notes on a safety event.

GET

Live Locations

/fleet/locations

Real-time location feed for all vehicles.

GET

Location History

/fleet/locations/history

Historical GPS breadcrumbs for a vehicle over a time range.

GET

DMS Events

/safety/dms/events

Driver Monitoring System events: drowsiness, distraction, phone use, seatbelt.

GET

Driver Scores

/safety/scores

Safety scores aggregated by driver over a time period.

GET

Videos

/media/videos

Returns dash cam video recordings linked to safety events or requested manually.

POST

Request Snapshot

/media/snapshots

Requests a live camera snapshot from a dashcam. Returns a task ID; poll for completion.

GET

Dashcams

/devices/dashcams

Returns all dashcam devices and their online status.

GET

List Alerts

/alerts

Returns configured alert rules for your organization.

POST

Create Alert

/alerts

Creates a new alert rule. Supports event-based and threshold triggers.

GET

List Webhooks

/webhooks

Returns all configured webhook endpoints for your organization.

POST

Create Webhook

/webhooks

Registers a new webhook endpoint to receive real-time event notifications.

DELETE

Delete Webhook

/webhooks/{id}

Permanently removes a webhook endpoint. All future events will stop being delivered.

GET

Fleet Summary

/analytics/fleet

Aggregated fleet metrics: total miles, active vehicles, fuel usage, utilization.

GET

Safety Report

/analytics/safety

Safety analytics breakdown by driver, vehicle, or time period.

GET

List Devices

/devices

Returns all hardware devices registered to your fleet.

GET

Get Device

/devices/{id}

Returns a single device with hardware info, firmware version, and connectivity status.

Explorer
Code
Environment
API Key
Base URL
https://sandbox-api.tracksafe365.com/v2
Generated Headers
Authorization: Bearer <enter key above>
Content-Type: application/json
Recent Requests
No requests yet
cURL
JavaScript
Python
Go
# List Vehicles curl -X GET "https://sandbox-api.tracksafe365.com/v2/fleet/vehicles" \ -H "Authorization: Bearer <API_KEY>" \ -H "Content-Type: application/json"
const listVehicles = async () => { const res = await fetch( `https://sandbox-api.tracksafe365.com/v2/fleet/vehicles`, { headers: { 'Authorization': `Bearer <API_KEY>`, 'Content-Type': 'application/json' } } ); const data = await res.json(); console.log(data); }; listVehicles();
import requests BASE_URL = "https://sandbox-api.tracksafe365.com/v2" API_KEY = "<API_KEY>" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json", } res = requests.get( f"{BASE_URL}/fleet/vehicles", headers=headers, params={"limit": 100}, ) print(res.json())
package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("GET", "https://sandbox-api.tracksafe365.com/v2/fleet/vehicles", nil, ) req.Header.Set("Authorization", "Bearer <API_KEY>", ) req.Header.Set("Content-Type", "application/json") client := &http.Client{} resp, _ := client.Do(req) defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }

API Reference

Select a resource from the sidebar to view full endpoint documentation.

Changelog

Release notes and API updates for the TrackSafe365 platform.

2026-06-10
Driver Monitoring API — General Availability
New
  • DMS events endpoint now GA: /safety/dms/events
  • Driver scores endpoint supports new distraction sub-score field
  • Added include_media param to attach linked video URLs
2026-05-22
Webhooks v2 — Signature Verification
NewBreaking
  • Webhook payloads now include HMAC-SHA256 signature in X-TS365-Signature header
  • Old webhook format deprecated — migrate before 2026-09-01
  • New retry policy: 3 attempts with exponential backoff
2026-04-15
Fleet Analytics Enhancements
NewFix
  • Fleet summary now includes EV-specific metrics: charge level, range
  • Fixed date range off-by-one error in safety report aggregations
  • Added groupBy=tag support to analytics endpoints
2026-03-02
Deprecation: Legacy Authentication
Deprecated
  • API key query parameter (?api_key=) deprecated in favor of Authorization header
  • Will be removed 2026-12-01

System Status

Real-time status of TrackSafe365 platform services.

All systems operational
Services — Last 90 days Updated just now