REST API Reference
API for accessing vehicle specifications, NHTSA recalls, and NHTSA safety ratings. All three data verticals share the same discoverable browsing pattern: list available years → list makes for a year → list models for a year + make → fetch data.
Quick start
Authenticate and make your first API request.
-
Create your API token
Sign in, add prepaid credits, then create a token under API Tokens. You can use the same token for REST and the MCP server.
Get API key -
Configure your environment
Store your token in
CARSTAT_API_TOKEN. Every request example on this page reads this environment variable.export CARSTAT_API_TOKEN="your-api-token"
-
Make your first request
Returns a list of all available vehicle model years in descending order.
GET/v1/specs/yearsThis request uses prepaid credits. See endpoint pricing before running it.
cURLcurl "https://api.carstat.app/v1/specs/years" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScriptconst response = await fetch("https://api.carstat.app/v1/specs/years", { headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` }, }); const data = await response.json();Pythonimport os import requests response = requests.get( "https://api.carstat.app/v1/specs/years", headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"}, timeout=30, ) data = response.json()Example response 200 OK[ 2024, 2023, 2022, 2021, 2020 ]
Vehicle Specifications
Retrieve full 250+ field engineering specifications. Browse years → makes → models → modifications to get a modification_id, then fetch the full spec sheet. Also supports metric-based search.
Returns a list of vehicle manufacturers (makes) that have models available for the specified year.
| Name | In | Type | Description |
|---|---|---|---|
| year | path | integer |
Model year (e.g., 2024)
e.g. 2024
|
[ "Acura", "Audi", "BMW", "Chevrolet", "Ford", "Honda", "Toyota" ]
curl "https://api.carstat.app/v1/specs/makes/2024" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/specs/makes/2024", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/specs/makes/2024",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns a list of vehicle models available for the specified year and manufacturer.
| Name | In | Type | Description |
|---|---|---|---|
| year | path | integer |
Model year (e.g., 2024)
e.g. 2024
|
| make | path | string |
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
|
[ "4Runner", "Camry", "Corolla", "Highlander", "RAV4", "Tacoma", "Tundra" ]
curl "https://api.carstat.app/v1/specs/models/2024/Toyota" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/specs/models/2024/Toyota", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/specs/models/2024/Toyota",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns the engine/powertrain configurations (modifications) available for the specified year, make and model. Use a returned modification ID to fetch the full specification sheet.
| Name | In | Type | Description |
|---|---|---|---|
| year | path | integer |
Model year (e.g., 2024)
e.g. 2024
|
| make | path | string |
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
|
| model | path | string |
Vehicle model name (e.g., Camry)
e.g. Camry
|
[
{
"name": "2.0 (173 Hp) Direct Shift CVT",
"modification_id": "11111111-1111-5111-8111-111111111111"
},
{
"name": "2.5 (218 Hp) Hybrid e-CVT",
"modification_id": "22222222-2222-5222-8222-222222222222"
}
]
curl "https://api.carstat.app/v1/specs/modifications/2024/Toyota/Camry" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/specs/modifications/2024/Toyota/Camry", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/specs/modifications/2024/Toyota/Camry",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns detailed vehicle specifications for a specific modification. Use the modification ID returned by the modifications listing endpoint.
| Name | In | Type | Description |
|---|---|---|---|
| modification_id | path | string |
UUID returned by the modifications listing endpoint
e.g. 11111111-1111-5111-8111-111111111111
|
curl "https://api.carstat.app/v1/specs/11111111-1111-5111-8111-111111111111" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/specs/11111111-1111-5111-8111-111111111111", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/specs/11111111-1111-5111-8111-111111111111",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Searches the specification catalog by VIN and returns every published specification sheet that matches the vehicle the VIN identifies — engine, dimensions, fuel economy, drivetrain and the rest of the 250+ fields, plus the single most likely match. This is a specification search keyed on a VIN, not VIN decoding: for the VIN's own decoded attributes — manufacturer, country of manufacture, vehicle class, series and trim labels, check digit and build plant — call GET /v1/vin-decode/{vin} instead. Requires credit access; charged at the published specifications-by-VIN rate.
| Name | In | Type | Description |
|---|---|---|---|
| vin | path | string |
Vehicle Identification Number (VIN), a 17-character string that uniquely identifies a vehicle
e.g. 1HGCM82633A123456
|
curl "https://api.carstat.app/v1/specs/vin/1HGCM82633A123456" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/specs/vin/1HGCM82633A123456", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/specs/vin/1HGCM82633A123456",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Search and rank vehicles by a performance or efficiency metric. Supports filtering by year, make, model, body type, fuel type, drive type, and transmission. For electrified vehicles, horsepower and torque use total system output when available. Fuel economy supports combined values from all available test cycles and MPGe for EVs. Requires credit access; charged at the published vehicle search rate.
| Name | In | Type | Description |
|---|---|---|---|
| metric | query | string |
Metric to rank by
e.g. horsepower
|
| order | query | string |
Sort order. Defaults to desc for horsepower/torque/mpg/max_speed/cargo, asc for acceleration/curb_weight
e.g. desc
|
| limit | query | integer |
Number of results (default 10, max 25)
e.g. 10
|
| year | query | integer |
Filter by an exact confirmed production year. A missing final production year is not assumed to mean ongoing production.
e.g. 2023
|
| year_min | query | integer |
Minimum confirmed production year (inclusive)
e.g. 2020
|
| year_max | query | integer |
Maximum confirmed production year (inclusive)
e.g. 2024
|
| make | query | string |
Filter by manufacturer (case-insensitive)
e.g. Toyota
|
| model | query | string |
Filter by model name (case-insensitive)
e.g. Camry
|
| body_type | query | string |
Filter by body type (e.g. 'sedan', 'suv', 'hatchback'). Matches vehicles where body_type is the given value or an array containing it (e.g. filtering 'suv' matches both ['suv'] and ['suv', 'crossover']).
e.g. sedan
|
| fuel_type | query | string |
Filter by fuel type — matches vehicles whose fuel_type array contains the value (e.g. 'petrol', 'diesel', 'electric', 'ethanol_e85')
e.g. petrol
|
| drive_type | query | string |
Filter by drive type (e.g. 'fwd', 'rwd', 'awd')
e.g. awd
|
| transmission | query | string |
Filter by transmission type. Electric vehicles generally have no transmission value; use fuel_type=electric to find them.
e.g. at
|
curl "https://api.carstat.app/v1/specs/search?metric=horsepower" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/specs/search?metric=horsepower", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/specs/search?metric=horsepower",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns a list of all available vehicle model years in descending order.
[ 2024, 2023, 2022, 2021, 2020 ]
curl "https://api.carstat.app/v1/specs/years" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/specs/years", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/specs/years",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
VIN Decoding
Decode a VIN into its manufacturer, model, model year, origin and build plant. It answers for vehicle classes the specification catalog does not cover.
Decodes a VIN into the vehicle it identifies — manufacturer, model, model year, country of manufacture, vehicle class, series/trim labels and the build plant.
| Name | In | Type | Description |
|---|---|---|---|
| vin | path | string |
Vehicle Identification Number (VIN), a 17-character string that uniquely identifies a vehicle
e.g. 4T1BF1FK5CU123456
|
curl "https://api.carstat.app/v1/vin-decode/4T1BF1FK5CU123456" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/vin-decode/4T1BF1FK5CU123456", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/vin-decode/4T1BF1FK5CU123456",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Recalls
Browse and retrieve NHTSA recall campaigns. Use the discovery endpoints (years → makes → models) to navigate available data, then fetch all recall campaigns for a specific vehicle.
Returns a list of distinct years for which recall data is available, ordered most recent first.
[ 2024, 2023, 2022 ]
curl "https://api.carstat.app/v1/recalls/years" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/recalls/years", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/recalls/years",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns a list of distinct vehicle makes for which recall data is available for the specified year.
| Name | In | Type | Description |
|---|---|---|---|
| year | path | integer |
Model year (e.g., 2023)
e.g. 2023
|
[ "Ford", "Honda", "Toyota" ]
curl "https://api.carstat.app/v1/recalls/makes/2023" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/recalls/makes/2023", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/recalls/makes/2023",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns a list of distinct model names for which recall data is available for the given year and make.
| Name | In | Type | Description |
|---|---|---|---|
| year | path | integer |
Model year (e.g., 2024)
e.g. 2024
|
| make | path | string |
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
|
[ "Camry", "Corolla", "RAV4" ]
curl "https://api.carstat.app/v1/recalls/models/2024/Toyota" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/recalls/models/2024/Toyota", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/recalls/models/2024/Toyota",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns a list of recalls for the specified vehicle. Each recall includes details such as the recall ID, summary, consequence, remedy, and the date it was issued.
| Name | In | Type | Description |
|---|---|---|---|
| year | path | integer |
Model year (e.g., 2024)
e.g. 2024
|
| make | path | string |
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
|
| model | path | string |
Vehicle model name (e.g., Camry). The specifications catalog's name and other market names for the same car also match (e.g., F-Series F-100/F-150, Cerato), as do NHTSA's body, cab and drive variants of the model.
e.g. Camry
|
curl "https://api.carstat.app/v1/recalls/2024/Toyota/Camry" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/recalls/2024/Toyota/Camry", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/recalls/2024/Toyota/Camry",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Safety Ratings
Browse and retrieve NHTSA 5-star crash test ratings. Use the discovery endpoints (years → makes → models) to navigate available data, then fetch frontal, side, pole, and rollover ratings for a specific vehicle.
Returns a list of distinct years for which safety rating data is available, ordered most recent first.
[ 2024, 2023, 2022 ]
curl "https://api.carstat.app/v1/safety-ratings/years" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/safety-ratings/years", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/safety-ratings/years",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns a list of distinct vehicle makes for which safety rating data is available for the specified year.
| Name | In | Type | Description |
|---|---|---|---|
| year | path | integer |
Model year (e.g., 2024)
e.g. 2024
|
[ "Ford", "Honda", "Toyota" ]
curl "https://api.carstat.app/v1/safety-ratings/makes/2024" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/safety-ratings/makes/2024", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/safety-ratings/makes/2024",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns a list of distinct model names for which safety rating data is available for the given year and make.
| Name | In | Type | Description |
|---|---|---|---|
| year | path | integer |
Model year (e.g., 2024)
e.g. 2024
|
| make | path | string |
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
|
[ "Camry", "Corolla", "RAV4" ]
curl "https://api.carstat.app/v1/safety-ratings/models/2024/Toyota" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/safety-ratings/models/2024/Toyota", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/safety-ratings/models/2024/Toyota",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()
Returns a list of NHTSA safety ratings for the specified vehicle. Each rating includes crash test star ratings and safety equipment details. Multiple results may be returned for different body styles or drive trains. Use the optional body_style and drive_train query parameters to narrow results.
| Name | In | Type | Description |
|---|---|---|---|
| year | path | integer |
Model year (e.g., 2024)
e.g. 2024
|
| make | path | string |
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
|
| model | path | string |
Vehicle model name (e.g., Camry). The specifications catalog's name and other market names for the same car also match (e.g., F-Series F-100/F-150, Cerato), as do NHTSA's body, cab and drive variants of the model.
e.g. Camry
|
| body_style | query | string |
Filter by body style (e.g., '4 DR Sedan')
|
| drive_train | query | string |
Filter by drive train (e.g., 'FWD', 'AWD')
|
curl "https://api.carstat.app/v1/safety-ratings/2024/Toyota/Camry" \ -H "Authorization: Bearer $CARSTAT_API_TOKEN"
const response = await fetch("https://api.carstat.app/v1/safety-ratings/2024/Toyota/Camry", {
headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
import os
import requests
response = requests.get(
"https://api.carstat.app/v1/safety-ratings/2024/Toyota/Camry",
headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
timeout=30,
)
data = response.json()