Skip to main content

Overview

The Telemax API uses a polling model for real-time fleet visibility. There is no persistent WebSocket connection — your integration requests the current position snapshot at a regular interval. Recommended polling interval: 30–60 seconds. Devices typically report every 30 seconds, so polling faster returns the same data and adds unnecessary load.

Step 1 — Authenticate

See Authentication for token details. Use the cached token pattern — request once, reuse for ~24 hours.
cURL

Step 2 — Get your company ID

You need a companyId to call fleet endpoints. Retrieve it from GetCompanies:
The first Id in the response is your primary company ID.

Step 3 — Fetch all fleet positions

Call POST /api/GetAllLastPositionData/{companyId} with checkVehicleHandlerState=true to get the latest known position for every vehicle in the company.
cURL
Key response fields per vehicle:
UtcTime is when the GPS fix was recorded on the device, not when it was fetched. A vehicle parked for an hour will show a one-hour-old timestamp. Use ConnectionStrengh (intentional spelling — see Known Issues) to distinguish a parked vehicle from an offline one.

Step 4 — Poll on an interval


Data freshness

  • UtcTime — timestamp of the last GPS fix recorded by the device. A vehicle parked for hours will have a stale timestamp.
  • ConnectionStrengh — reflects the device’s last-known signal quality. A poor signal may mean the vehicle is in a low-coverage area, not necessarily stationary.
  • If UtcTime is more than a few minutes old and Ignition is true, the device may be temporarily offline.

Polling guidance

  • 30–60 seconds is the recommended interval. Most Telemax devices report every 30 seconds.
  • Polling faster than the device reporting rate returns identical data and wastes quota.
  • If a vehicle’s position hasn’t changed between polls, suppress the map update to avoid unnecessary re-renders.

Migrating to webhooks

Telemax supports webhook push for position events (see webhooks.yaml). When webhooks are fully deployed, your integration can receive position updates in real time instead of polling. Until then, polling GetAllLastPositionData is the supported approach.