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 Apr 2026 2:30 PM",
"location": {
"address": "42 George St, Sydney NSW 2000",
"latitude": -33.8688,
"longitude": 151.2093
}
}
],
"totalResults": 1,
"lastResultIndex": 1,
"currentPage": 1,
"numberOfPages": 1
}{
"type": "AUTHENTICATION",
"code": "INVALID_CREDENTIALS",
"description": "The provided API key is invalid or does not exist.",
"requestId": "0HNLTALNU4DCO:00000004",
"docUrl": "https://docs.telemax.com.au/errors/invalid-credentials"
}{
"type": "AUTHORIZATION",
"code": "INVALID_SCOPE",
"description": "The provided token does not have permission to access this resource.",
"requestId": "50e5c5f7-ccae-4ab6-b070-56d6645ceb1e",
"docUrl": "https://docs.telemax.com.au/errors/invalid-scope"
}{
"type": "RESOURCE",
"code": "NOT_FOUND",
"description": "Vehicle was not found.",
"requestId": "0HNLTALNU4DDG:00000002",
"docUrl": "https://docs.telemax.com.au/errors/not-found"
}{
"type": "VALIDATION_ERROR",
"code": "INVALID_INPUT",
"description": "One or more route or query parameters could not be parsed.",
"requestId": "req_9f3e7c1b",
"docUrl": "https://docs.telemax.com.au/errors/invalid-input"
}{
"type": "RATE_LIMIT",
"code": "RATE_LIMIT_EXCEEDED",
"description": "Too many requests. Please slow down.",
"requestId": "req_6d2f8b4a",
"docUrl": "https://docs.telemax.com.au/errors/rate-limit-exceeded"
}{
"type": "SERVER_ERROR",
"code": "INTERNAL_SERVER_ERROR",
"description": "An unexpected error occurred. Please try again later.",
"requestId": "req_1e5a3c7d",
"docUrl": "https://docs.telemax.com.au/errors/internal-server-error"
}Vehicles
Engine codes
Enriched engine/diagnostic codes for a vehicle with full AI analysis, 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 Apr 2026 2:30 PM",
"location": {
"address": "42 George St, Sydney NSW 2000",
"latitude": -33.8688,
"longitude": 151.2093
}
}
],
"totalResults": 1,
"lastResultIndex": 1,
"currentPage": 1,
"numberOfPages": 1
}{
"type": "AUTHENTICATION",
"code": "INVALID_CREDENTIALS",
"description": "The provided API key is invalid or does not exist.",
"requestId": "0HNLTALNU4DCO:00000004",
"docUrl": "https://docs.telemax.com.au/errors/invalid-credentials"
}{
"type": "AUTHORIZATION",
"code": "INVALID_SCOPE",
"description": "The provided token does not have permission to access this resource.",
"requestId": "50e5c5f7-ccae-4ab6-b070-56d6645ceb1e",
"docUrl": "https://docs.telemax.com.au/errors/invalid-scope"
}{
"type": "RESOURCE",
"code": "NOT_FOUND",
"description": "Vehicle was not found.",
"requestId": "0HNLTALNU4DDG:00000002",
"docUrl": "https://docs.telemax.com.au/errors/not-found"
}{
"type": "VALIDATION_ERROR",
"code": "INVALID_INPUT",
"description": "One or more route or query parameters could not be parsed.",
"requestId": "req_9f3e7c1b",
"docUrl": "https://docs.telemax.com.au/errors/invalid-input"
}{
"type": "RATE_LIMIT",
"code": "RATE_LIMIT_EXCEEDED",
"description": "Too many requests. Please slow down.",
"requestId": "req_6d2f8b4a",
"docUrl": "https://docs.telemax.com.au/errors/rate-limit-exceeded"
}{
"type": "SERVER_ERROR",
"code": "INTERNAL_SERVER_ERROR",
"description": "An unexpected error occurred. Please try again later.",
"requestId": "req_1e5a3c7d",
"docUrl": "https://docs.telemax.com.au/errors/internal-server-error"
}Overview
Returns engine code (OBD-II / Diagnostic Trouble Code) records from the most recent engine fault event for a vehicle. Each code is enriched with AI-generated analysis including a plain-English explanation of why it matters, a list of possible root causes, and step-by-step recommended actions — written as full descriptive sentences, not short labels.The V1 version of this endpoint is DTC codes. V2 is paginated, significantly enriched with AI analysis, and the path has changed from
/dtc to /engine-codes.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
Vehicle ID.
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 | Standard code description (e.g. "Catalyst System Efficiency Below Threshold (Bank 1)") |
| 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". May be null for older cached records |
| detectedAt | datetime | null | When the fault was detected (user’s local timezone) |
| detectedAtFormatted | string | Human-readable formatted timestamp |
| location.address | string | null | Street address where the fault was detected; null if geocoding failed |
| 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 Apr 2026 2:30 PM",
"location": {
"address": "42 George St, Sydney NSW 2000",
"latitude": -33.8688,
"longitude": 151.2093
}
}
],
"currentPage": 1,
"numberOfPages": 1,
"totalResults": 1,
"lastResultIndex": 0
}
Error responses
| Status | Meaning |
|---|---|
| 401 | Token does not have access to this vehicle |
| 404 | Vehicle not found |
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 to the company the key belongs to and may restrict access to a vehicle allowlist and/or action set (see token claims).
No refresh endpoint — re-authenticate with your API key when the token expires.
Path Parameters
Response
Successful response
Was this page helpful?
⌘I