Engine codes (V2)
curl --request GET \
--url https://api.telemax.com.au/v2/api/vehicles/{id}/engine-codes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.telemax.com.au/v2/api/vehicles/{id}/engine-codes"
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/vehicles/{id}/engine-codes', 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/vehicles/{id}/engine-codes",
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/vehicles/{id}/engine-codes"
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/vehicles/{id}/engine-codes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telemax.com.au/v2/api/vehicles/{id}/engine-codes")
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_body{
"items": [
{
"code": "P0420",
"description": "Catalyst System Efficiency Below Threshold (Bank 1)",
"whyThisMatters": [
"This fault indicates your catalytic converter is no longer processing exhaust gases effectively, which means your vehicle is producing higher levels of harmful emissions than permitted.",
"If left unaddressed, the engine management system may enter a reduced-power mode, leading to noticeably worse fuel economy and throttle response.",
"In some regions this fault will cause the vehicle to fail an emissions inspection."
],
"possibleCauses": [
"The catalytic converter itself has degraded or been poisoned — commonly caused by using leaded fuel, coolant leaks into the exhaust, or high-mileage wear.",
"A faulty upstream or downstream oxygen sensor is reporting incorrect readings, making a healthy converter appear to be failing.",
"An exhaust leak upstream of the converter is allowing unmetered air to enter, skewing the sensor readings."
],
"recommendedActions": [
"Begin by scanning for any additional fault codes, particularly oxygen sensor faults (P0130–P0167), as these should be resolved first before condemning the catalytic converter.",
"Inspect the exhaust system for any leaks between the engine and the catalytic converter, and repair any found.",
"If the oxygen sensors test within spec and there are no exhaust leaks, have the catalytic converter tested for flow restriction and converter efficiency under load — replacement is likely required."
],
"severity": "Medium",
"detectedAt": "2026-04-27T14:30:00",
"detectedAtFormatted": "27/04/2026 02:30:00 PM",
"location": {
"address": "14, George St, Haymarket, Sydney, NSW, AUS",
"latitude": -33.8795,
"longitude": 151.205
}
}
],
"totalResults": 1,
"lastResultIndex": 1,
"currentPage": 1,
"numberOfPages": 1
}
Vehicles
Engine codes
Engine codes newly reported in a vehicle’s latest engine-fault record, with AI analysis where available, severity and detection location.
GET
/
v2
/
api
/
vehicles
/
{id}
/
engine-codes
Engine codes (V2)
curl --request GET \
--url https://api.telemax.com.au/v2/api/vehicles/{id}/engine-codes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.telemax.com.au/v2/api/vehicles/{id}/engine-codes"
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/vehicles/{id}/engine-codes', 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/vehicles/{id}/engine-codes",
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/vehicles/{id}/engine-codes"
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/vehicles/{id}/engine-codes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telemax.com.au/v2/api/vehicles/{id}/engine-codes")
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_body{
"items": [
{
"code": "P0420",
"description": "Catalyst System Efficiency Below Threshold (Bank 1)",
"whyThisMatters": [
"This fault indicates your catalytic converter is no longer processing exhaust gases effectively, which means your vehicle is producing higher levels of harmful emissions than permitted.",
"If left unaddressed, the engine management system may enter a reduced-power mode, leading to noticeably worse fuel economy and throttle response.",
"In some regions this fault will cause the vehicle to fail an emissions inspection."
],
"possibleCauses": [
"The catalytic converter itself has degraded or been poisoned — commonly caused by using leaded fuel, coolant leaks into the exhaust, or high-mileage wear.",
"A faulty upstream or downstream oxygen sensor is reporting incorrect readings, making a healthy converter appear to be failing.",
"An exhaust leak upstream of the converter is allowing unmetered air to enter, skewing the sensor readings."
],
"recommendedActions": [
"Begin by scanning for any additional fault codes, particularly oxygen sensor faults (P0130–P0167), as these should be resolved first before condemning the catalytic converter.",
"Inspect the exhaust system for any leaks between the engine and the catalytic converter, and repair any found.",
"If the oxygen sensors test within spec and there are no exhaust leaks, have the catalytic converter tested for flow restriction and converter efficiency under load — replacement is likely required."
],
"severity": "Medium",
"detectedAt": "2026-04-27T14:30:00",
"detectedAtFormatted": "27/04/2026 02:30:00 PM",
"location": {
"address": "14, George St, Haymarket, Sydney, NSW, AUS",
"latitude": -33.8795,
"longitude": 151.205
}
}
],
"totalResults": 1,
"lastResultIndex": 1,
"currentPage": 1,
"numberOfPages": 1
}
Overview
Returns the engine codes (OBD-II diagnostic trouble codes) newly reported in the vehicle’s most recent engine-fault record. This is not the list of codes currently active: a code that was already active at an earlier report is not repeated, and a code cleared since is still listed. Each code includes an AI-generated analysis where one is available: why it matters, possible root causes and recommended actions, written as full sentences.The V1 version of this endpoint is DTC codes. V1 returns every code in the vehicle’s latest DTC report; V2 returns only the codes newly reported in its latest engine-fault record (see above), is paginated, and adds AI analysis, severity and the detection location.
Rate limit: 10 req/s · 30/min · 6,000/hr · 144,000/day
Endpoint
GET /v2/api/vehicles/{id}/engine-codes
Path parameters
integer
required
Public vehicle ID (
deviceId).Query parameters
integer
default:"1"
Page number (1-based).
integer
default:"50"
Records per page.
Response
200 OK —PagedListResult<EngineCodeDto>
| Field | Type | Description |
|---|---|---|
| code | string | Raw OBD-II code (e.g. P0420) |
| description | string | null | Description of the code (e.g. "Catalyst System Efficiency Below Threshold (Bank 1)"). null when no AI analysis could be produced; the three lists are then empty and severity is null. A later request may return the analysis |
| whyThisMatters | string[] | AI-generated full sentences explaining the impact on vehicle operation and safety |
| possibleCauses | string[] | AI-generated full sentences describing the most likely root causes |
| recommendedActions | string[] | AI-generated full sentences with step-by-step recommended actions |
| severity | string | null | Urgency level: "High", "Medium" or "Low". null when there is no analysis, and in some older analyses |
| detectedAt | datetime | null | When the codes were reported, in the API key’s time zone |
| detectedAtFormatted | string | detectedAt formatted as the API key’s date format followed by hh:mm:ss tt (12-hour clock, e.g. 27/04/2026 02:30:00 PM) |
| location.address | string | null | Address where the codes were reported: 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. null when no address is found. If the geocoding service fails, the whole request returns 500 |
| location.latitude | number | null | Latitude of detection location |
| location.longitude | number | null | Longitude of detection location |
When a vehicle has no engine codes, the API returns
items: null (not []) and currentPage: 0 (not 1). Always null-check items before iterating.Example response
{
"items": [
{
"code": "P0420",
"description": "Catalyst System Efficiency Below Threshold (Bank 1)",
"whyThisMatters": [
"This fault indicates your catalytic converter is no longer processing exhaust gases effectively, which means your vehicle is producing higher levels of harmful emissions than permitted.",
"If left unaddressed, the engine management system may enter a reduced-power mode, leading to noticeably worse fuel economy and throttle response.",
"In some regions this fault will cause the vehicle to fail an emissions inspection."
],
"possibleCauses": [
"The catalytic converter itself has degraded or been poisoned — commonly caused by using leaded fuel, coolant leaks into the exhaust, or high-mileage wear.",
"A faulty upstream or downstream oxygen sensor is reporting incorrect readings, making a healthy converter appear to be failing.",
"An exhaust leak upstream of the converter is allowing unmetered air to enter, skewing the sensor readings."
],
"recommendedActions": [
"Begin by scanning for any additional fault codes, particularly oxygen sensor faults (P0130–P0167), as these should be resolved first before condemning the catalytic converter.",
"Inspect the exhaust system for any leaks between the engine and the catalytic converter, and repair any found.",
"If the oxygen sensors test within spec and there are no exhaust leaks, have the catalytic converter tested for flow restriction and converter efficiency under load — replacement is likely required."
],
"severity": "Medium",
"detectedAt": "2026-04-27T14:30:00",
"detectedAtFormatted": "27/04/2026 02:30:00 PM",
"location": {
"address": "14, George St, Haymarket, Sydney, NSW, AUS",
"latitude": -33.8795,
"longitude": 151.205
}
}
],
"currentPage": 1,
"numberOfPages": 1,
"totalResults": 1,
"lastResultIndex": 1
}
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 | Vehicle not found, or not in your companies |
| 422 | page is less than 1, pageSize is less than 1 or more than 500, or a route or query value cannot be parsed (e.g. a non-integer {id}, or page=abc) |
| 500 | The geocoding service failed, or another unexpected server error |
curl "https://api.telemax.com.au/v2/api/vehicles/88421/engine-codes" \
-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
Response
Successful response
Was this page helpful?