Get Trip Replay (User Time)
curl --request POST \
--url https://api.telemax.com.au/api/GetReplayUserTime \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.telemax.com.au/api/GetReplayUserTime"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.telemax.com.au/api/GetReplayUserTime', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.telemax.com.au/api/GetReplayUserTime",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.telemax.com.au/api/GetReplayUserTime"
req, _ := http.NewRequest("POST", 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))
}HttpResponse<String> response = Unirest.post("https://api.telemax.com.au/api/GetReplayUserTime")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telemax.com.au/api/GetReplayUserTime")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{}
]{
"type": "AUTHENTICATION",
"code": "TOKEN_EXPIRED",
"description": "The access token has expired. Request a new token using /api/authentication/token/user or /api/authentication/token/api-key.",
"requestId": "req_7f3a2b1c",
"docUrl": "https://docs.telemax.com.au/errors#token-expired"
}{
"type": "AUTHORIZATION",
"code": "COMPANY_ACCESS_DENIED",
"description": "Your token does not grant access to company 99. Ensure you are using a token issued for this company.",
"requestId": "req_4a1d9e2f",
"docUrl": "https://docs.telemax.com.au/errors#company-access-denied"
}{
"type": "NOT_FOUND",
"code": "VEHICLE_NOT_FOUND",
"description": "Vehicle with ID 9999 was not found.",
"requestId": "req_2b8c1a5d",
"docUrl": "https://docs.telemax.com.au/errors#not-found"
}{
"type": "VALIDATION",
"code": "INVALID_DATE_FORMAT",
"description": "The 'from' parameter '2025-13-45' is not a valid ISO 8601 date-time string.",
"requestId": "req_9f3e7c1b",
"docUrl": "https://docs.telemax.com.au/errors#invalid-parameter"
}{
"type": "RATE_LIMIT",
"code": "RATE_LIMIT_EXCEEDED",
"description": "Too many requests. Wait 30 seconds before retrying.",
"requestId": "req_6d2f8b4a",
"docUrl": "https://docs.telemax.com.au/errors#rate-limit"
}{
"type": "SERVER_ERROR",
"code": "INTERNAL_ERROR",
"description": "An unexpected error occurred. Please try again or contact support with the requestId.",
"requestId": "req_1e5a3c7d",
"docUrl": "https://docs.telemax.com.au/errors#server-error"
}Telemetry & replay
Trip replay (user time)
Trip replay for a vehicle using the user’s time zone context.
POST
/
api
/
GetReplayUserTime
Get Trip Replay (User Time)
curl --request POST \
--url https://api.telemax.com.au/api/GetReplayUserTime \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.telemax.com.au/api/GetReplayUserTime"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.telemax.com.au/api/GetReplayUserTime', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.telemax.com.au/api/GetReplayUserTime",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.telemax.com.au/api/GetReplayUserTime"
req, _ := http.NewRequest("POST", 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))
}HttpResponse<String> response = Unirest.post("https://api.telemax.com.au/api/GetReplayUserTime")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telemax.com.au/api/GetReplayUserTime")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{}
]{
"type": "AUTHENTICATION",
"code": "TOKEN_EXPIRED",
"description": "The access token has expired. Request a new token using /api/authentication/token/user or /api/authentication/token/api-key.",
"requestId": "req_7f3a2b1c",
"docUrl": "https://docs.telemax.com.au/errors#token-expired"
}{
"type": "AUTHORIZATION",
"code": "COMPANY_ACCESS_DENIED",
"description": "Your token does not grant access to company 99. Ensure you are using a token issued for this company.",
"requestId": "req_4a1d9e2f",
"docUrl": "https://docs.telemax.com.au/errors#company-access-denied"
}{
"type": "NOT_FOUND",
"code": "VEHICLE_NOT_FOUND",
"description": "Vehicle with ID 9999 was not found.",
"requestId": "req_2b8c1a5d",
"docUrl": "https://docs.telemax.com.au/errors#not-found"
}{
"type": "VALIDATION",
"code": "INVALID_DATE_FORMAT",
"description": "The 'from' parameter '2025-13-45' is not a valid ISO 8601 date-time string.",
"requestId": "req_9f3e7c1b",
"docUrl": "https://docs.telemax.com.au/errors#invalid-parameter"
}{
"type": "RATE_LIMIT",
"code": "RATE_LIMIT_EXCEEDED",
"description": "Too many requests. Wait 30 seconds before retrying.",
"requestId": "req_6d2f8b4a",
"docUrl": "https://docs.telemax.com.au/errors#rate-limit"
}{
"type": "SERVER_ERROR",
"code": "INTERNAL_ERROR",
"description": "An unexpected error occurred. Please try again or contact support with the requestId.",
"requestId": "req_1e5a3c7d",
"docUrl": "https://docs.telemax.com.au/errors#server-error"
}All routes require JWT Bearer unless noted. Vehicle
id parameters refer to the legacy vehicle id unless stated otherwise.
Overview
Returns trip replay data for a vehicle, using the same implementation asGetReplay (controller documents “user time zone”; the service normalizes from/to as UTC for queries).
A V2 version of this endpoint is available: Trip replay. New integrations should prefer V2.
Endpoint
POST /api/GetReplayUserTime
Authentication
Required. Bearer token.Request headers
| Header | Required | Description |
|---|---|---|
| Authorization | Yes | Bearer <access_token> |
Query parameters
integer
required
Legacy vehicle id.
string (datetime)
required
Range start (interpreted as UTC in service).
string (datetime)
required
Range end (interpreted as UTC in service).
Response
200 OK —TripDto[] (List<TripDto>). Each trip includes Points (up to 400 per trip segment), Url (Google static map), Encoded polyline, Distance, Duration, StartAddress, EndAddress, StartTimeUser, EndTimeUser.
Known field issues (V1 only):
| Field | Issue |
|---|---|
Distance | Returned in km (odometer delta), not metres. A value of 11.34 means 11.34 km. |
Duration | .NET TimeSpan string ("03:05:50" or "2.04:04:21.0100000"), not ISO 8601. |
Url | Google Static Maps URL — requires a valid API key configured server-side; may return a placeholder string. |
StartTimeUser, EndTimeUser, Distance, Duration | All trips return identical values when the date range covers multiple trips. Each TripDto metadata is computed from the first/last point of the entire query window, not per-trip. Use the Points array for accurate per-trip data. Prefer V2 Trip replay which fixes this. |
Points field names use camelCase (timeUtc, timeUser, speed, direction, ignition, odo).
Error responses
| Status | Meaning |
|---|---|
| 404 | Unknown legacy vehicle id |
| 401 | Caller cannot access vehicle |
Code examples
cURL
curl -X POST "https://api.telemax.com.au/api/GetReplayUserTime?id=88421&from=2026-04-01T00:00:00&to=2026-04-07T23:59:59" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Authorizations
JWT Bearer token obtained from POST /api/authentication/token/user or POST /api/authentication/token/api-key.
Lifetime: ~24 hours (86,399 seconds). Cache the token and reuse it. Re-authenticate 5 minutes before expiry.
Scoping:
- User tokens are scoped to a single company.
- API key tokens may restrict access to a vehicle allowlist and/or action set (see token claims).
No refresh endpoint — re-authenticate with your credentials when the token expires.
Query Parameters
Vehicle ID
From date and time (UTC)
To date and time (UTC)
Response
Successful response with trip replay data
Was this page helpful?