The car inspection API
A structured pre-purchase inspection checklist in five languages, curated model-specific known defects, inspection scoring, and VIN decoding — as plain JSON, with no sign-up and no API key.
Start with one request
No key, no account, no header. Base URL: https://api.elgarde.com/api.
# What should I check on a 2015 VW Golf diesel? curl "https://api.elgarde.com/api/v1/checklist?fuel=diesel&make=Volkswagen&model=Golf&lang=en" # Just the model's known weak points curl "https://api.elgarde.com/api/v1/defects?make=Peugeot&model=208"
Adaptive, not generic
The checklist changes with the car: a diesel gets DPF and glow-plug items, an EV gets state-of-health and charging items, and a known model gets its own documented weak points.
Five languages
Every checklist item is authored in English, Portuguese, Russian, Ukrainian and French — not machine-translated at request time.
Open canon
The data and the scoring specification live in a public repository under CC-BY, with a conformance suite every implementation must pass.
Endpoints
Four public endpoints under /v1. Everything else on the service belongs to the Elgarde app and requires authentication.
GET /v1/checklist
The assembled inspection checklist: base groups, the fuel-specific module, and the known-defect group when the make and model match a curated rule. Two levels of grouping, 1–5 scoring, critical items flagged.
| Parameter | Description |
|---|---|
| lang | en · pt · ru · uk · fr. Anything else falls back to English. |
| fuel | petrol · diesel · hybrid · ev · other. Adds the matching module. |
| make, model | Free text. When they match a curated rule, the model's known defects are appended. |
{
"lang": "en",
"car": { "make": "Volkswagen", "model": "Golf", "fuelType": "diesel" },
"itemCount": 33,
"groups": [
{
"id": "ext", "order": 0, "title": "Exterior", "aggregation": "average",
"children": [
{
"id": "ext.body", "order": 0, "title": "Body & paint",
"items": [
{ "id": "ext.body.panels", "order": 0,
"prompt": "Panel gaps even, no misalignment", "critical": false },
{ "id": "ext.body.rust", "order": 2,
"prompt": "No rust or corrosion", "critical": true }
]
}
]
}
],
"attribution": { "source": "Elgarde", "url": "https://elgarde.com",
"license": "CC-BY-4.0" }
}
GET /v1/defects
Curated, model-specific weak points — the DQ200 dry clutch, the PureTech wet belt, the N47 timing chain. Critical entries are the ones that make a car worth walking away from.
| Parameter | Description |
|---|---|
| make, model | Free text, matched case-insensitively against the curated rules. |
| lang | en · pt. Defect text is authored in those two; other languages fall back to English. |
{
"matched": true,
"ruleId": "psa-known-issues",
"label": "PSA known issues",
"defects": [
{ "id": "puretech.wetbelt", "critical": true,
"text": "PureTech 1.2 wet timing belt — degrades into the oil pump" },
{ "id": "ep6.chain", "critical": false,
"text": "1.6 THP (EP6) timing chain + carbon build-up on valves" }
]
}
An empty result is not a clean bill of health. It means nothing is curated for that model yet.
POST /v1/score
Rolls a sheet of answers into per-group scores and one overall verdict. Answers are 1–5, or -1 for not applicable and -2 for not inspected. A failed critical item clamps the verdict down regardless of the average — a car can average 4.9 and still be a 1.
curl -X POST "https://api.elgarde.com/api/v1/score" \ -H "Content-Type: application/json" \ -d '{"make":"Volkswagen","model":"Golf","fuelType":"diesel", "scores":{"docs.all.mileage":1,"ext.body.rust":4}}' { "overall": 1.0, "overallBeforeClamp": 2.5, "clampedBy": ["docs.all.mileage"], "answered": 2, "total": 33 }
GET /v1/vin/{vin}
Normalises the free NHTSA vPIC dataset into a usable shape: make, model, year, fuel type, body style, engine. vPIC is US-centric and thin on European models, so partial results with nulls are normal rather than an error. Responses are cached for 24 hours.
curl "https://api.elgarde.com/api/v1/vin/WVWZZZ1KZAW000001" { "source": "nhtsa-vpic", "car": { "vin": "WVWZZZ1KZAW000001", "make": "VOLKSWAGEN", "model": "Golf", "year": 2015, "fuelType": "diesel", "bodyStyle": "estate", "engine": "2.0L 4cyl" } }
GET /v1/meta
Canon version, supported languages, how many defect rules and entries are curated, and the attribution block. Useful as a health check and for cache invalidation.
Limits, licence and attribution
Rate limits
60 requests per minute per IP, and 15 per minute for VIN decoding, which calls a third-party service. Over the limit you get 429 with a Retry-After header. The checklist and defect data are static — please cache them.
Licence
The data is CC-BY-4.0. Use it commercially, embed it, ship it in your product — just keep the attribution to elgarde.com that every response carries.
Stability
The /v1 shape is additive: new fields may appear, existing ones will not change meaning. Item ids are permanent — they are how an inspection stays comparable over time.
The data is open
The checklist content, the defect rules and the scoring specification are one canonical, versioned dataset. Every implementation — this API, the Elgarde app, and each language port — is checked against the same conformance vectors, so a score computed here and a score computed in the app are the same number.
Checklist taxonomy
Grouped inspection items with per-item criticality and 1–5 scoring, authored in five languages.
Model defect corpus
Curated known weak points for common European used models, with provenance ids and a critical flag.
Scoring specification
Weighted, average and worst-case group rollups plus the critical clamp, written down and pinned by test vectors.