AutoHub is in the SteadyAPI footer, and the how-to series never shows a vehicle lookup. This guide lists makes for a model year, lists models for that make, then decodes a 17-character VIN.
👉 To access these endpoints, 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'
}
1. List makes for a year
Endpoint: GET /v1/vehicles/make
Documentation:
https://docs.steadyapi.com/#autohub-api-GETapi-v1-vehicles-make
Parameters
year— required model year, up to 4 characters (example:2024)
Python
import requests
headers = {"Authorization": "Bearer YOUR_API_KEY"}
make_url = "https://api.steadyapi.com/v1/vehicles/make"
response = requests.get(make_url, headers=headers, params={"year": "2024"})
response.raise_for_status()
makes = response.json().get("body", [])
make = next(item for item in makes if item["name"] == "Chevrolet")
print(make["name"], make["modelId"])
Response fields
meta includes year and total. Each item in body includes:
name— make namemodelId— make id. Pass this value asmakeIdon the model endpoint.
2. List models for that make
Endpoint: GET /v1/vehicles/model
Documentation:
https://docs.steadyapi.com/#autohub-api-GETapi-v1-vehicles-model
Parameters
year— required model yearmakeId— required make id from the previous call
Python
model_url = "https://api.steadyapi.com/v1/vehicles/model"
model_params = {"year": "2024", "makeId": make["modelId"]}
models = requests.get(model_url, headers=headers, params=model_params)
models.raise_for_status()
for item in models.json().get("body", [])[:8]:
print(item["modelId"], item["name"])
Each model includes modelId and name. meta includes year, makeId, and total.
3. Decode a VIN
When you already have a VIN, skip the year and make steps. The value must be exactly 17 characters.
Endpoint: GET /v1/vehicles/vin
Documentation:
https://docs.steadyapi.com/#autohub-api-GETapi-v1-vehicles-vin
Parameters
vin— required, exactly 17 characters
Python
vin_url = "https://api.steadyapi.com/v1/vehicles/vin"
vin = requests.get(vin_url, headers=headers, params={"vin": "JM3KKBHA5R1166850"})
vin.raise_for_status()
body = vin.json().get("body", {})
print(body.get("vehicle_id"), body.get("trim_name"), body.get("body_style"))
print(body.get("engine"), body.get("transmission"), body.get("drivetrain"))
Response fields
meta includes vin and has_results. body includes:
vehicle_id— id used by later value and details callstrim_namebody_styleenginetransmissiondrivetrainvehicle_option_ids— option ids on the decoded vehicle
Practical use
Use make and model when a shopper picks a year and name. Use VIN when a listing already has the plate number. Keep vehicle_id if the next step is value, reviews, or details.
👉 Get your API key and look up a vehicle: https://steadyapi.com/register