Build on the TrackPro API
The same REST API our own apps run on. Every vehicle, trip, alert, and geofence is addressable over HTTPS — pull live locations in under five seconds, or let signed webhooks push events to you the moment they happen.
GET /v1/vehicles/:id/location200 OK{
"vehicle_id": "veh_8h2k1m",
"name": "Truck 042",
"location": {
"lat": 32.77662,
"lng": -96.79699,
"heading": 274,
"speed_kph": 67,
"accuracy_m": 3
},
"status": "moving",
"driver_id": "drv_4c9t2e",
"odometer_km": 81243.7,
"recorded_at": "2026-06-10T14:32:08Z"
}Getting started
From zero to first call in three steps
No SDK required. If you can send an HTTP request, you can build on TrackPro.
Request API access
API access is available on every paid plan. Talk to us or start a trial, then create an OAuth client and your first API key from Settings → Developer in the dashboard.
Make your first call
Authenticate with a bearer token and hit a read endpoint. Every account ships with sample vehicles so you can pull a live location before you connect a single tracker.
Subscribe to events
Register a webhook endpoint to receive geofence, alert, and maintenance events in real time — so you build on a push model instead of polling for changes.
Your first requestcurl https://api.trackpro.live/v1/vehicles \
-H "Authorization: Bearer $TRACKPRO_TOKEN"Authentication
OAuth 2.0 and scoped keys
Server-to-server integrations use the OAuth 2.0 client-credentials flow to mint short-lived bearer tokens. For scripts and internal tools, scoped API keys work too — each key is bound to a set of scopes and recorded in a per-key audit log. All traffic is AES-256 encrypted in transit and at rest.
- Least-privilege by design — grant only the scopes an integration needs
- Rotate or revoke any key instantly; every call is attributable in the audit log
- Tokens are short-lived; pass them as a
Bearercredential
Available scopes
fleet:readRead vehicles, drivers, locations, trips, and assets.fleet:writeCreate and update vehicles, drivers, and assets.geofences:readList and inspect geofences and their membership.geofences:writeCreate, edit, and delete geofences.alerts:readRead alert definitions and triggered alert history.webhooks:manageRegister, rotate, and delete webhook endpoints.
GET /v1/vehiclesauthenticatedcurl https://api.trackpro.live/v1/vehicles \
-H "Authorization: Bearer $TRACKPRO_TOKEN"200 OK — list response{
"object": "list",
"data": [
{ "vehicle_id": "veh_8h2k1m", "name": "Truck 042", "status": "moving" },
{ "vehicle_id": "veh_2p7r4x", "name": "Van 11", "status": "idle" }
],
"has_more": true,
"next_cursor": "veh_2p7r4x"
}Core resources
Everything in your fleet, addressable
Resource-oriented endpoints with predictable URLs, JSON bodies, and cursor pagination.
Vehicles
/v1/vehiclesGETPOSTVehicles, metadata, and current status across your fleet.
Locations
/v1/vehicles/:id/locationGETLive position, heading, and speed — refreshed in under five seconds.
Trips
/v1/tripsGETCompleted and in-progress trips with distance, duration, and route.
Geofences
/v1/geofencesGETPOSTDefine zones and read entry/exit events per vehicle.
Alerts
/v1/alertsGETTriggered alerts for speed, idling, fault codes, and more.
Drivers
/v1/driversGETPOSTDriver records, assignments, and identification.
Assets
/v1/assetsGETPOSTNon-powered assets — trailers, containers, and equipment.
GET /v1/vehicles/:id/location200 OKcurl https://api.trackpro.live/v1/vehicles/veh_8h2k1m/location \
-H "Authorization: Bearer $TRACKPRO_TOKEN"200 OK — location response{
"vehicle_id": "veh_8h2k1m",
"name": "Truck 042",
"location": {
"lat": 32.77662,
"lng": -96.79699,
"heading": 274,
"speed_kph": 67,
"accuracy_m": 3
},
"status": "moving",
"driver_id": "drv_4c9t2e",
"odometer_km": 81243.7,
"recorded_at": "2026-06-10T14:32:08Z"
}Webhooks
Real-time events, pushed to you
Register an HTTPS endpoint and TrackPro will POST a JSON event the moment something happens — no polling. Every payload is signed with HMAC-SHA256 in the X-TrackPro-Signature header and carries a stable event id so your handlers can stay idempotent.
vehicle.locationA vehicle reported a new position.geofence.enterA vehicle crossed into a geofence.geofence.exitA vehicle left a geofence.alert.triggeredAn alert rule fired (speed, idle, fault code…).maintenance.dueA service interval came due for a vehicle.
POST to your endpoint — example payload{
"id": "evt_9f3k0a2c",
"type": "geofence.enter",
"created_at": "2026-06-10T14:32:09Z",
"data": {
"vehicle_id": "veh_8h2k1m",
"geofence_id": "geo_depot_north",
"geofence_name": "North Depot",
"location": { "lat": 32.92140, "lng": -96.85710 },
"occurred_at": "2026-06-10T14:32:08Z"
}
}Respond with a 2xx within a few seconds to acknowledge. TrackPro retries failed deliveries with exponential backoff.
Rate limits & pagination
Built for batch and burst
Rate limits
600 requests per minute per organization, with burst headroom for batch syncs. Every response carries X-RateLimit-Remaining and X-RateLimit-Reset; over the limit you get a 429 with a Retry-After header.
Cursor pagination
List endpoints accept a limit and a cursor. Responses include has_more and next_cursor — loop until has_more is false.
Paginate with a cursorcurl "https://api.trackpro.live/v1/trips?limit=50&cursor=trip_5m2k9p" \
-H "Authorization: Bearer $TRACKPRO_TOKEN"200 OK — paginated list{
"object": "list",
"data": [
{ "vehicle_id": "veh_8h2k1m", "name": "Truck 042", "status": "moving" },
{ "vehicle_id": "veh_2p7r4x", "name": "Van 11", "status": "idle" }
],
"has_more": true,
"next_cursor": "veh_2p7r4x"
}SDKs & tooling
REST today, SDKs on the roadmap
We are honest about where the platform is. The API and webhooks are production-ready now and language-agnostic; official client libraries are coming next.
REST API
Resource-oriented JSON over HTTPS. Works with any language, framework, or no-code tool that speaks HTTP.
Signed webhooks
HMAC-SHA256-signed event delivery with retries and a stable event id for idempotent processing.
Language SDKs
Official JavaScript/TypeScript and Python clients, plus an OpenAPI spec, are planned to wrap the REST API.
Developer questions, answered
API access is included on every paid TrackPro plan. Once your account is active, an admin can create OAuth 2.0 clients and scoped API keys under Settings → Developer. If you want to evaluate the API first, start a 14-day trial or talk to us and we will set you up with sandbox credentials.
Get API access
Tell us what you are building and we will set you up with credentials, sandbox data, and a developer to talk to. API access is included on every paid plan.