curl --request GET \
--url https://api.telemax.com.au/v2/api/companies/{id}/alert-records \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.telemax.com.au/v2/api/companies/{id}/alert-records"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.telemax.com.au/v2/api/companies/{id}/alert-records', 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/v2/api/companies/{id}/alert-records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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/v2/api/companies/{id}/alert-records"
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(string(body))
}HttpResponse<String> response = Unirest.get("https://api.telemax.com.au/v2/api/companies/{id}/alert-records")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telemax.com.au/v2/api/companies/{id}/alert-records")
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_bodyAlert records
Paginated list of triggered alert records for every company the token can read (its own and its direct sub-companies).
curl --request GET \
--url https://api.telemax.com.au/v2/api/companies/{id}/alert-records \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.telemax.com.au/v2/api/companies/{id}/alert-records"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.telemax.com.au/v2/api/companies/{id}/alert-records', 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/v2/api/companies/{id}/alert-records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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/v2/api/companies/{id}/alert-records"
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(string(body))
}HttpResponse<String> response = Unirest.get("https://api.telemax.com.au/v2/api/companies/{id}/alert-records")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telemax.com.au/v2/api/companies/{id}/alert-records")
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_bodyOverview
Returns triggered alert records, newest first, for every company the token can read (its own company and its direct sub-companies), whatever{id} is. {id} must be one of those companies, otherwise the call returns 404; a deeper or cancelled sub-company also returns 404. Records of deleted alert definitions are not returned.
Endpoint
GET /v2/api/companies/{id}/alert-records
Path parameters
Query parameters
0 returns nothing. The limit applies per alert type: the newest num records of each type are taken, then merged newest first and paged. So only the first num records of the merged list are complete; set num to at least page × pageSize for the deepest page you read. totalResults counts only this capped set. A negative num returns 500.Response
200 OK —PagedListResult<AlertDto>
| Field | Type | Description |
|---|---|---|
| id | integer | Alert definition ID (alertId in Alert configurations) |
| utcTime | datetime | null | When the alert was triggered (UTC, no fractional seconds) |
| userTime | datetime | null | utcTime in the API key’s time zone |
| userTimeFormatted | string | utcTime in the API key’s time zone, formatted as the key’s date format followed by hh:mm:ss tt (12-hour clock, e.g. 26/05/2026 01:40:40 PM) |
| alertType | integer | Alert type: see Alert types |
| description | string | Description of the alert definition (latest version). An empty string when the alert has no description. |
| vehicleId | integer | Internal vehicle ID. It can differ from deviceId and cannot be used as {id} in /v2/api/vehicles/{id} routes |
| vehicleName | string | Vehicle display name, or "--" |
| address | string | Reverse-geocoded address at the trigger location: house number, street, suburb, city, state and country code (alpha-3), comma-separated, with no postcode. Parts with no value are left out, so the number of parts varies. The address is that of a nearby address point (a property’s address in the map data): the house number can be a range or carry a letter (244-246, 533A), it can belong to a neighbouring property, and the street can be a nearby street rather than the road the vehicle was on. When no address point is near, the address is the road’s, with no house number. "--" when not geocoded. |
| lat | number | Latitude at trigger |
| lng | number | Longitude at trigger |
| isRead | boolean | Whether the record is marked read. The flag is shared with the Telemax Dashboard: a record marked read through the API shows as read to Dashboard users, and the reverse. |
Alert types
Only these 10 alert types are returned.alertType is the integer; the names match alertType in Alert configurations and the “alertType in GET …/alerts” column of the webhook type tables.
alertType | Name |
|---|---|
| 3 | Engine Fault |
| 4 | Fatigue |
| 5 | Geofence |
| 6 | Geofence Speed |
| 7 | Idle |
| 8 | Ignition |
| 9 | Low Battery |
| 10 | Exceed Maximum Speed |
| 11 | Mileage |
| 12 | Above Speed Limit |
- Device Disconnected (1), Device Reconnected (2), Doors Unlocked (13), Tire Pressure (14) and Road Surface (19) are not returned here; they are available through webhooks.
- The records of Charging (15), Exceed RPM (16), Exceed Engine Temperature (17) and Driving after dark (20) are neither returned here nor delivered by webhooks; their definitions still appear in Alert configurations.
- Reminders (18) are never returned.
alertId to id. Take the type from alertType here: if a definition’s type was later edited, its older records keep the old type, while Alert configurations shows the new one.
Error responses
| Status | Meaning |
|---|---|
| 401 | Missing, invalid or expired bearer token (INVALID_CREDENTIALS) |
| 403 | The API key lacks this endpoint’s permission (INVALID_SCOPE), or the company is suspended (CompanySuspended) — see 403 Forbidden |
| 404 | Company not found or not in caller’s accessible hierarchy |
| 500 | Invalid parameters: page is less than 1, pageSize is less than 1 or more than 100, or num is negative. This is not transient: fix the parameters rather than retrying. The page and pageSize checks run before the 403 INVALID_SCOPE and 404 checks. Other 500s are unexpected server errors. A page past the last one returns 200 with no items. |
curl "https://api.telemax.com.au/v2/api/companies/12/alert-records?from=2026-04-01T00:00:00Z&num=200&page=1&pageSize=50" \
-H "Authorization: Bearer <token>"
Authorizations
JWT Bearer token obtained from POST /v2/api/authentication/token/api-key.
Lifetime: ~24 hours (86,399 seconds). Cache the token and reuse it. Re-authenticate 5 minutes before expiry.
Scoping: API key tokens are scoped by the key's company and its action set; see Token scoping.
No refresh endpoint — re-authenticate with your API key when the token expires.
Path Parameters
Query Parameters
Records triggered strictly after this time (UTC). Optional; when omitted, every stored record is considered.
Required in practice: omitted or 0 returns nothing, and a negative value returns 500. Applied per alert type, so only the first num records of the merged, newest-first list are complete.
x >= 1x >= 11 <= x <= 100Response
Successful response
Was this page helpful?