List vehicle check submissions
GET /dn/vehicle_checklist_submissions returns a paginated list of the vehicle checks your drivers submitted, with every answer, photo link, and signature.
curl --request GET \
--url https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions \
--header 'X-API-KEY: <api-key>'import requests
url = "https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions', 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://app.detrack.com/api/v2/dn/vehicle_checklist_submissions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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://app.detrack.com/api/v2/dn/vehicle_checklist_submissions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "6905a1c3e8ec54cbf4a05e20",
"organisation_id": "5b22055510c92b1a046ece01",
"vehicle_checklist_id": "6901f0a2e8ec54cbf4a05b0f",
"vehicle_checklist_name": "Start of day",
"trackable_id": "5b2205f610c92b1a046ece0a",
"trackable_name": "Truck 12",
"detrack_id": "DT-1042",
"started_at": "2026-11-03T08:40:02.118+08:00",
"created_at": "2026-11-03T08:42:18.204+08:00",
"updated_at": "2026-11-03T08:42:18.204+08:00",
"passed_item_count": 11,
"failed_item_count": 1,
"signature_name": "Daniel Reyes",
"signature_url": "<string>",
"vehicle_checklist_is_approval": false,
"approval_status": "approved",
"approval_user_id": "<string>",
"approval_user_name": "<string>",
"approval_user_email": "<string>",
"approval_date": "2026-11-03T09:05:41.000+08:00",
"items": [
{
"id": "6905a1c3e8ec54cbf4a05e21",
"vehicle_checklist_item_id": "6901f0a2e8ec54cbf4a05b10",
"vehicle_checklist_item_name": "Odometer",
"value": "48210",
"notes": "<string>",
"photo_1_url": "<string>",
"photo_2_url": "<string>",
"photo_3_url": "<string>",
"photo_4_url": "<string>",
"created_at": "2026-11-03T08:42:18.204+08:00",
"updated_at": "2026-11-03T08:42:18.204+08:00"
}
]
}
],
"links": {
"first": "<string>",
"last": "<string>",
"next": "<string>",
"prev": "<string>"
},
"total_count": 1
}from and to, and narrow them by vehicle, checklist, or pass/fail result.
- If a checklist was deleted after drivers submitted it, any page that includes one of its submissions returns
500. Narrow the list withchecklist_idorfrom/toto skip those submissions (DTR-7093). status=passreturns every submission with no failed answer, including checks with no pass/fail questions. To keep only checks where something passed, also check thatpassed_item_countis greater than0(DTR-7094).- For a manager whose access is limited to groups,
assign_tohas no effect, and the list includes every vehicle in their groups. Filter bytrackable_idin the response instead (DTR-7095).
Authorizations
Your Detrack API key, from Integrations > API Key in the dashboard.
Query Parameters
Earliest submission date (YYYY-MM-DD) in your organisation's time zone, inclusive.
"2026-11-01"
Latest submission date (YYYY-MM-DD) in your organisation's time zone, inclusive.
"2026-11-03"
Vehicle IDs (trackable_id), comma-separated. Currently has no effect for a manager whose access is limited to groups.
"5b2205f610c92b1a046ece0a"
Checklist IDs (vehicle_checklist_id), comma-separated.
"6901f0a2e8ec54cbf4a05b0f"
fail returns submissions with at least one failed pass/fail question. pass returns submissions with no failed question, which includes submissions that have no pass/fail questions at all.
pass, fail Case-insensitive text to match in the vehicle name (trackable_name) or the checklist name.
"Truck"
Submission IDs, comma-separated.
Page number.
Records per page. Values over 100 are treated as 100.
x <= 100curl --request GET \
--url https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions \
--header 'X-API-KEY: <api-key>'import requests
url = "https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions', 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://app.detrack.com/api/v2/dn/vehicle_checklist_submissions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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://app.detrack.com/api/v2/dn/vehicle_checklist_submissions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.detrack.com/api/v2/dn/vehicle_checklist_submissions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "6905a1c3e8ec54cbf4a05e20",
"organisation_id": "5b22055510c92b1a046ece01",
"vehicle_checklist_id": "6901f0a2e8ec54cbf4a05b0f",
"vehicle_checklist_name": "Start of day",
"trackable_id": "5b2205f610c92b1a046ece0a",
"trackable_name": "Truck 12",
"detrack_id": "DT-1042",
"started_at": "2026-11-03T08:40:02.118+08:00",
"created_at": "2026-11-03T08:42:18.204+08:00",
"updated_at": "2026-11-03T08:42:18.204+08:00",
"passed_item_count": 11,
"failed_item_count": 1,
"signature_name": "Daniel Reyes",
"signature_url": "<string>",
"vehicle_checklist_is_approval": false,
"approval_status": "approved",
"approval_user_id": "<string>",
"approval_user_name": "<string>",
"approval_user_email": "<string>",
"approval_date": "2026-11-03T09:05:41.000+08:00",
"items": [
{
"id": "6905a1c3e8ec54cbf4a05e21",
"vehicle_checklist_item_id": "6901f0a2e8ec54cbf4a05b10",
"vehicle_checklist_item_name": "Odometer",
"value": "48210",
"notes": "<string>",
"photo_1_url": "<string>",
"photo_2_url": "<string>",
"photo_3_url": "<string>",
"photo_4_url": "<string>",
"created_at": "2026-11-03T08:42:18.204+08:00",
"updated_at": "2026-11-03T08:42:18.204+08:00"
}
]
}
],
"links": {
"first": "<string>",
"last": "<string>",
"next": "<string>",
"prev": "<string>"
},
"total_count": 1
}