image

Depreciation projects what a vehicle is worth over several years from today’s mileage. You need a vehicleId, not a year and model name. The body has a short summary plus one row per year, with trade-in and private-party values.

👉 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 vehicleId from GET /v1/vehicles/trims or from the specs on GET /v1/vehicles/details. This call is the multi-year curve. A single price for the current mileage is GET /v1/vehicles/car-value, and that endpoint takes mileage as a string. Here mileage is an integer.


Estimate vehicle depreciation

Endpoint: GET /v1/vehicles/depreciation

Documentation:
https://docs.steadyapi.com/#autohub-api-GETapi-v1-vehicles-depreciation

Parameters

  • vehicleId — required (example: 475635)
  • mileage — required integer, minimum 0 (example: 50000)
  • zipcode — optional, default 73101
  • condition — optional: excellent, verygood, good, fair, poor. Default verygood
  • annualMileage — optional integer, default 12000, maximum 100000

Condition and annual mileage change the curve. verygood is one word, with no hyphen. poor is valid here. The car-value endpoint does not use that same condition list. Zip code changes the dollar amounts. The default ZIP is still a place, not a national average you can ignore. The response does not echo vehicleId. Keep the id you sent.

Python

import requests

url = "https://api.steadyapi.com/v1/vehicles/depreciation"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

response = requests.get(url, headers=headers, params={
    "vehicleId": "475635",
    "mileage": 50000,
})
response.raise_for_status()
body = response.json().get("body") or {}
summary = body.get("summary") or {}
rows = body.get("depreciation_data") or []

print(summary.get("total_depreciation"), summary.get("depreciation_percentage"))
if rows:
    print(rows[0].get("year"), rows[0].get("trade_in_value"), rows[0].get("is_projected"))

Annotated sample

{
  "summary": {
    "total_depreciation": 5810,
    "depreciation_percentage": 23.52,
    "total_years": 5
  },
  "depreciation_data": [
    {
      "year": 2024,
      "mileage": 26000,
      "trade_in_value": 24700,
      "private_party_value": 27690,
      "is_projected": false
    }
  ]
}

The sample meta for this curve is zip 73101, condition verygood, mileage 50000, and annual mileage 12000. total_depreciation is the first trade-in value minus the last one in the series, in dollars. depreciation_percentage is that drop divided by the first trade-in value, rounded to two decimals. Read is_projected on each row. The 2024 row above is not a projection. Later years in the same list can be.


Practical use

The 2026 row in this series is the one whose mileage is 50000, matching meta.mileage. The first row is an earlier year at 26000 miles, not “today” by itself. Use the row whose mileage matches the request when you want the current point on the curve.

trade_in_value and private_party_value are numbers. Do not mix them with car-value’s nested excellent / good objects. That is a different response.

Changing condition or annualMileage builds a new curve. Store those meta fields with the summary so two saves of the same vehicleId stay comparable.

👉 Get your API key and estimate depreciation: https://steadyapi.com/register

How to Read a Tweet Using SteadyAPI Oct 13, 2026

How to Read a Tweet Using SteadyAPI

Read one tweet by id. The text and counts are on legacy. meta.reply_count is how many replies were included.

How to List MLB Teams Using SteadyAPI Oct 13, 2026

How to List MLB Teams Using SteadyAPI

List MLB clubs and store the numeric id. The roster call takes that id as teamIds.

How to Get an NHL Roster Using SteadyAPI Oct 12, 2026

How to Get an NHL Roster Using SteadyAPI

Load forwards, defensemen, and goalies for one NHL abbreviation. Player names are objects with a default field.

How to Get an AliExpress Description Using SteadyAPI Oct 12, 2026

How to Get an AliExpress Description Using SteadyAPI

Turn a product-detail description token into ordered text modules. The product id alone is not enough.