Get a vehicle's record
curl --request GET \
--url http://localhost:3000/api/pnc/vehicles/{id} \
--cookie __Host-argus-session=import requests
url = "http://localhost:3000/api/pnc/vehicles/{id}"
headers = {"cookie": "__Host-argus-session="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: '__Host-argus-session='}};
fetch('http://localhost:3000/api/pnc/vehicles/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/pnc/vehicles/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_COOKIE => "__Host-argus-session=",
]);
$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 := "http://localhost:3000/api/pnc/vehicles/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cookie", "__Host-argus-session=")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:3000/api/pnc/vehicles/{id}")
.header("cookie", "__Host-argus-session=")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/pnc/vehicles/{id}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["cookie"] = '__Host-argus-session='
response = http.request(request)
puts response.read_body{
"data": {
"id": "cmg6a4veh000jl508veh00001",
"plate": "LK21ABC",
"make": "BMW",
"model": "3 Series",
"colour": "Black",
"type": "CAR",
"registrationStatus": "REGISTERED",
"insuranceStatus": "INSURED",
"motStatus": "VALID",
"taxStatus": "TAXED",
"createdAt": "2026-10-06T19:30:00.000Z",
"updatedAt": "2026-10-06T19:30:00.000Z",
"stolen": false,
"alerts": {
"markers": 0
},
"keeper": {
"id": "cmg6a1civ000fl508civ00001",
"reference": "CIV-000123",
"fullName": "Amelia Hart",
"dateOfBirth": "1990-04-12",
"gender": "FEMALE",
"address": "14 Curzon Street, Mayfair",
"status": "ACTIVE",
"licence": {
"number": "HART9144223PA85",
"status": "VALID"
},
"alerts": {
"markers": 1,
"warrants": 1
},
"since": "2026-10-06T19:30:00.000Z"
},
"keepers": [
{
"civilian": {
"id": "cmg6a1civ000fl508civ00001",
"reference": "CIV-000123",
"fullName": "Amelia Hart"
},
"startedAt": "2026-10-06T19:30:00.000Z",
"endedAt": null
}
],
"markers": [],
"counts": {
"records": 1,
"markers": 0
}
}
}{
"error": {
"code": "INVALID_INPUT",
"message": "Request validation failed.",
"details": [
{
"path": [
"limit"
],
"message": "Invalid input"
}
]
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Sign in to continue."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "FORBIDDEN",
"message": "Permission required: pnc.view."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "NOT_FOUND",
"message": "Vehicle not found."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "The request could not be completed."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}Lookup
Get a vehicle's record
Permission: pnc.view.
Access: Browser session, or a service credential holding the permission as a scope.
The vehicle, its registered keeper with their licence status and alert counts, keeper history, active markers and counts. This is the registration → keeper → licence → alerts chain in one read.
GET
/
pnc
/
vehicles
/
{id}
Get a vehicle's record
curl --request GET \
--url http://localhost:3000/api/pnc/vehicles/{id} \
--cookie __Host-argus-session=import requests
url = "http://localhost:3000/api/pnc/vehicles/{id}"
headers = {"cookie": "__Host-argus-session="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: '__Host-argus-session='}};
fetch('http://localhost:3000/api/pnc/vehicles/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/pnc/vehicles/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_COOKIE => "__Host-argus-session=",
]);
$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 := "http://localhost:3000/api/pnc/vehicles/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cookie", "__Host-argus-session=")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:3000/api/pnc/vehicles/{id}")
.header("cookie", "__Host-argus-session=")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/pnc/vehicles/{id}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["cookie"] = '__Host-argus-session='
response = http.request(request)
puts response.read_body{
"data": {
"id": "cmg6a4veh000jl508veh00001",
"plate": "LK21ABC",
"make": "BMW",
"model": "3 Series",
"colour": "Black",
"type": "CAR",
"registrationStatus": "REGISTERED",
"insuranceStatus": "INSURED",
"motStatus": "VALID",
"taxStatus": "TAXED",
"createdAt": "2026-10-06T19:30:00.000Z",
"updatedAt": "2026-10-06T19:30:00.000Z",
"stolen": false,
"alerts": {
"markers": 0
},
"keeper": {
"id": "cmg6a1civ000fl508civ00001",
"reference": "CIV-000123",
"fullName": "Amelia Hart",
"dateOfBirth": "1990-04-12",
"gender": "FEMALE",
"address": "14 Curzon Street, Mayfair",
"status": "ACTIVE",
"licence": {
"number": "HART9144223PA85",
"status": "VALID"
},
"alerts": {
"markers": 1,
"warrants": 1
},
"since": "2026-10-06T19:30:00.000Z"
},
"keepers": [
{
"civilian": {
"id": "cmg6a1civ000fl508civ00001",
"reference": "CIV-000123",
"fullName": "Amelia Hart"
},
"startedAt": "2026-10-06T19:30:00.000Z",
"endedAt": null
}
],
"markers": [],
"counts": {
"records": 1,
"markers": 0
}
}
}{
"error": {
"code": "INVALID_INPUT",
"message": "Request validation failed.",
"details": [
{
"path": [
"limit"
],
"message": "Invalid input"
}
]
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Sign in to continue."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "FORBIDDEN",
"message": "Permission required: pnc.view."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "NOT_FOUND",
"message": "Vehicle not found."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "The request could not be completed."
},
"requestId": "3f1c9d5e-7a42-4f0b-9c1e-8b6d2a4e5f70"
}Authorizations
sessionCookieserviceCredential
The opaque session cookie set by Discord sign-in. Named argus-session outside production. HttpOnly, so scripts cannot read it; same-origin requests send it automatically. Requests other than GET must also carry an Origin header equal to the application's own origin.
Path Parameters
Vehicle ID. Argus record identifier.
Required string length:
1 - 64Pattern:
^[a-zA-Z0-9_-]+$Response
Success.
Show child attributes
Show child attributes