Browse

VIN Decoder

Decodes a 17-character vehicle identification number with the US NHTSA vPIC service: model year, make, model, trim, body, engine, drivetrain, assembly plant and the safety equipment NHTSA has on record. The check digit is verified before NHTSA is called. Empty fields mean NHTSA has no data, not that the feature is missing.

POST https://YOUR_API_HOST/v1/vin-decoder

Credits and caching

  • Success billing. 1 credit per VIN that decodes (a VIN with no data is free). You are charged only when the lookup finds something; a not-found result is free.
  • Results are cached per account for 7 days. Repeating the same lookup in that window is free and returns cache_hit: true.
  • Invalid input, rate limits and errors are never charged.
  • Read the billing rules for the full picture.

Request

Send a JSON body with Authorization: Bearer <key>. The body can be up to 64 KB.

FieldTypeRequiredNotes
vinstringyesUp to 40 characters.
ignore_check_digitbooleanno-
model_yearintegernoMinimum 1981. Maximum 2040.

Example request

Terminal
curl -X POST https://YOUR_API_HOST/v1/vin-decoder \
  -H "Authorization: Bearer $LOOKVALID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"vin":"1HGCM82633A004352"}'

Response

The status is 200 whether or not anything was found. Check found. Every response also carries the X-Request-Id, X-Credits-Charged, X-Credits-Remaining and X-RateLimit-* headers.

Envelope

FieldTypeNotes
request_idstring-
product"vin-decoder"-
foundbooleanFalse means the lookup ran and found nothing; it is free.
reasonstring or nullWhy nothing was found; null when found.
sourcesarray of stringWhere the data came from, including any attribution the licence requires.
credits_chargedinteger0 for a cache hit, a not-found result or an error.
credits_remaininginteger-
cache_hitbooleanTrue when the account already paid for this lookup within the cache window.
cacheobject-

The data object

Present when found is true, otherwise null.

FieldTypeNotes
vinstring-
model_yearnumber or null-
makestring or null-
modelstring or null-
trimstring or null-
seriesstring or null-
vehicle_typestring or null-
body_classstring or null-
doorsnumber or null-
drive_typestring or null-
transmissionstring or null-
fuel_type_primarystring or null-
fuel_type_secondarystring or null-
electrification_levelstring or null-
engineobject-
engine.cylindersnumber or null-
engine.displacement_lnumber or null-
engine.horsepowernumber or null-
engine.kwnumber or null-
engine.modelstring or null-
engine.configurationstring or null-
engine.turbostring or null-
engine.manufacturerstring or null-
plantobject-
plant.citystring or null-
plant.statestring or null-
plant.countrystring or null-
plant.companystring or null-
manufacturerstring or null-
gvwrstring or null-
safetyobject-
safety.absstring or null-
safety.escstring or null-
safety.tpmsstring or null-
safety.traction_controlstring or null-
safety.seat_beltsstring or null-
safety.airbagsobject-
safety.airbags.frontstring or null-
safety.airbags.sidestring or null-
safety.airbags.curtainstring or null-
safety.airbags.kneestring or null-
safety.airbags.seat_cushionstring or null-
safety.driver_assistanceobject-
safety.driver_assistance.forward_collision_warningstring or null-
safety.driver_assistance.lane_departure_warningstring or null-
safety.driver_assistance.lane_keep_systemstring or null-
safety.driver_assistance.blind_spot_monitoringstring or null-
safety.driver_assistance.parking_assiststring or null-
safety.driver_assistance.adaptive_cruise_controlstring or null-
safety.driver_assistance.crash_imminent_brakingstring or null-
safety.driver_assistance.dynamic_brake_supportstring or null-
safety.driver_assistance.pedestrian_automatic_emergency_brakingstring or null-
safety.driver_assistance.rear_visibility_systemstring or null-
safety.driver_assistance.rear_cross_traffic_alertstring or null-
safety.driver_assistance.rear_automatic_emergency_brakingstring or null-
safety.driver_assistance.blind_spot_interventionstring or null-
safety.driver_assistance.lane_centering_assistancestring or null-
safety.driver_assistance.daytime_running_lightstring or null-
safety.driver_assistance.adaptive_driving_beamstring or null-
decode_qualitystringOne of complete, partial.
warningsarray of object-
warnings[].codeinteger-
warnings[].textstring-
additional_notesstring or null-
suggested_vinstring or null-
notesstring-

Captured example (2026-10-18)

A real run of this lookup on 2026-10-18, using the request above, which is a public input. The envelope fields are left out.

{
  "product": "vin-decoder",
  "found": true,
  "data": {
    "vin": "1HGCM82633A004352",
    "model_year": 2003,
    "make": "HONDA",
    "model": "Accord",
    "trim": "EX-V6",
    "series": null,
    "vehicle_type": "PASSENGER CAR",
    "body_class": "Coupe",
    "doors": 2,
    "drive_type": null,
    "transmission": "Automatic",
    "fuel_type_primary": "Gasoline",
    "fuel_type_secondary": null,
    "electrification_level": null,
    "engine": {
      "cylinders": 6,
      "displacement_l": 3,
      "horsepower": 240,
      "kw": null,
      "model": "J30A4",
      "configuration": "V-Shaped",
      "turbo": null,
      "manufacturer": null
    },
    "plant": {
      "city": "MARYSVILLE",
      "state": "OHIO",
      "country": "UNITED STATES (USA)",
      "company": null
    },
    "manufacturer": "AMERICAN HONDA MOTOR CO., INC.",
    "gvwr": "Class 1C: 4,001 - 5,000 lb (1,814 - 2,268 kg)",
    "safety": {
      "abs": null,
      "esc": null,
      "tpms": null,
      "traction_control": null,
      "seat_belts": "Manual",
      "airbags": {
        "front": "1st Row (Driver and Passenger)",
        "side": "1st Row (Driver and Passenger)",
        "curtain": "1st and 2nd Rows",
        "knee": null,
        "seat_cushion": null
      },
      "driver_assistance": {
        "forward_collision_warning": null,
        "lane_departure_warning": null,
        "lane_keep_system": null,
        "blind_spot_monitoring": null,
        "parking_assist": null,
        "adaptive_cruise_control": null,
        "crash_imminent_braking": null,
        "dynamic_brake_support": null,
        "pedestrian_automatic_emergency_braking": null,
        "rear_visibility_system": null,
        "rear_cross_traffic_alert": null,
        "rear_automatic_emergency_braking": null,
        "blind_spot_intervention": null,
        "lane_centering_assistance": null,
        "daytime_running_light": null,
        "adaptive_driving_beam": null
      }
    },
    "decode_quality": "complete",
    "warnings": [],
    "additional_notes": null,
    "suggested_vin": null,
    "notes": "Empty values in the source mean NHTSA has no data for that field; they do not mean the vehicle lacks the feature."
  },
  "sources": [
    "NHTSA vPIC vehicle decoder (vpic.nhtsa.dot.gov), US government data"
  ]
}

Errors

  • 400 invalid_input: The request input is invalid.
  • 401 unauthorized: The API key is missing, malformed, revoked or unknown.
  • 402 insufficient_credits: The account does not have enough credits for this lookup. Error code: insufficient_credits. During a trial whose allowance is used up the code is trial_allowance_exhausted: nothing is charged and the customer starts the plan from the billing page.
  • 405 method_not_allowed: This endpoint does not accept that HTTP method.
  • 413 payload_too_large: The request body is too large.
  • 429 rate_limited: Too many requests for this API key.
  • 500 internal_error: An unexpected error occurred.
  • 503 provider_unavailable: The data source for this product is unavailable right now.