Make and model lists stop at the model. Trims are the next step. You send the year, the make id, and the model id. Each row is a trim name plus the vehicle_id that value and recalls expect. A model id is not a vehicle id.
👉 To access this endpoint, you must obtain an API key: https://steadyapi.com/register
Authentication
Every call uses a Bearer token from your SteadyAPI dashboard.
Documentation:
https://docs.steadyapi.com/#authenticating-requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY'
}
Where this fits
GET /v1/vehicles/make needs a year and returns make ids. GET /v1/vehicles/model needs that year and makeId and returns modelId. This trims call needs all three. The vehicle_id on a trim row is what you send as vehicleId to GET /v1/vehicles/car-value and GET /v1/vehicles/recalls. A VIN lookup, GET /v1/vehicles/vin, can skip this chain and return a vehicle_id directly.
Trims for one model
Endpoint: GET /v1/vehicles/trims
Documentation:
https://docs.steadyapi.com/#autohub-api-GETapi-v1-vehicles-trims
Parameters
year— required, four-character year such as2011makeId— required make id fromGET /v1/vehicles/makemodelId— required model id fromGET /v1/vehicles/model
All three are required. Changing the year, even for the same make and model names, is a different list, and the ids from another year will not match. There is no trim-name search parameter. You pick a row from body.
Python
import requests
url = "https://api.steadyapi.com/v1/vehicles/trims"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(url, headers=headers, params={
"year": "2011",
"makeId": model["makeId"],
"modelId": model["modelId"],
})
response.raise_for_status()
payload = response.json()
print(payload.get("meta", {}).get("total"))
for trim in payload.get("body", [])[:8]:
print(trim.get("name"), trim.get("vehicle_id"))
Annotated sample
{
"name": "LS Pickup 4D 5 3/4 ft",
"vehicle_id": "358402"
}
Store both fields. name is the label you show. vehicle_id is the id for car value and recalls. meta.total is the number of trims. meta also echoes year, makeId, and modelId. For year 2011, make 9, and model 774, one of the rows is the LS pickup above. Another row on that same response is XFE Pickup 4D 5 3/4 ft with vehicle_id 358405. Use the id from the row the user picked.
Practical use
Make and model endpoints return ids, not names you can pass through. makeId 9 is an id from the make list. Sending the word Chevrolet as makeId will not resolve.
body is a list, not an object keyed by trim name. Walk it and match name if you need a specific cab or bed length. The vehicle_id values are close to each other and are not interchangeable.
Car value also requires mileage. Recalls require only vehicleId. Keep the trim name next to the id so a later price is attached to the right truck.
👉 Get your API key and list trims: https://steadyapi.com/register