Docs / Recall change history
Recall change history
What the agency changed in a recall since we first saw it.
GET/v1/recalls/{id}/history · API key required
Agencies correct recalls: they widen the models, fix the remedy or change the number of units. We keep each change to an official field (problem, consequence, remedy, notes, units, issued by, date, components) as the field, the old value, the new value and the day we recorded it.
The free tier returns the latest recorded change only. The full history of every change is a planned Pro feature (see pricing). A recall that has never changed returns an empty list.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
id | path | yes | The recall id, as in /v1/recalls/{id}. Example: 21V215000 |
Request
curl https://recalldb.app/v1/recalls/21V215000/history \
-H "Authorization: Bearer $RECALLDB_KEY"const res = await fetch('https://recalldb.app/v1/recalls/21V215000/history', {
headers: { Authorization: `Bearer ${process.env.RECALLDB_KEY}` },
})
const { data, source } = await res.json()
console.log(data, source.official_url)import os, requests
r = requests.get("https://recalldb.app/v1/recalls/21V215000/history", headers={"Authorization": f"Bearer {os.environ['RECALLDB_KEY']}"})
r.raise_for_status()
body = r.json()
print(body["data"], body["source"]["official_url"])Try it
Runs a real request with no signup (20 a day per network, read-only). VINs you try are used only for this call and never stored.
Get your own key Free: 1,000 requests a month.
Response
{
"data": {
"id": "21V215000",
"changes": [
{
"field": "units",
"old": "600000",
"new": "624552",
"changed_on": "2026-11-14"
}
],
"history_limit": "latest change only on the free tier; the full history is a planned Pro feature",
"dates_note": "changed_on is the U.S. Eastern day we recorded the change."
},
"source": {
"agency": "NHTSA",
"official_id": "21V215000",
"official_url": "https://www.nhtsa.gov/recalls?nhtsaId=21V215000",
"last_updated": "2026-11-13"
},
"attribution": {
"text": "Data from RecallDB",
"url": "https://recalldb.app"
}
}Every response includes source (agency, official ID, official URL, last updated) and attribution. Attribution rules.
Notes
- Counts as one request. History starts on the day we began recording it (2026-11-13); changes before that are not known.
Errors: error codes. Limits: rate limits.