Developer Documentation

Vehicle Verification API

Integrate VIN verification, vehicle valuation, and history data into your platform with our simple REST API.

Overview

The Vehicle Verification API provides three core services for integrating vehicle data into your applications:

Available Services

FieldTypeDescription
VIN CheckServiceValidate a VIN and retrieve verification details including import duty payment status.
Vehicle ValuationServiceRetrieve market valuation data for a vehicle, broken down by condition.
Vehicle HistoryServiceRetrieve a comprehensive vehicle report including ownership, stolen status, market value, sales history, and accident/damage records.

All endpoints require authentication via a service authorization header and accept a VIN as a path parameter.

Authentication

All endpoints require the following header. Authentication is handled using ServiceAPIAuthentication.

Required Headers

FieldTypeDescription
X-Service-AuthorizationrequiredStringBearer token (static secret key or temporary session token)
Example Headerhttp
X-Service-Authorization: Bearer YOUR_SECRET_KEY

Environment Modes

The API supports two operational modes. Mode is internally determined from the authenticated request context.

FieldTypeDescription
liveModeCalls real third-party vehicle data providers
sandboxModeReturns stub/test data for development

💡 Tip: Use sandbox mode during development. No real vehicle data providers are called in sandbox mode.

Getting a Session Token

Before calling any service endpoint, obtain a temporary session token by making a POST request to the /session-token/ endpoint using your private API key.

POST/session-token/

Request Headers

FieldTypeDescription
X-API-KEYrequiredStringBearer YOUR_API_SECRET_KEY
Example Responsejson
{
  "session_token": "eyJ1c2VyX3V1aWQiOiAiYTgzODQ4MWIt...",
  "mode": "sandbox",
  "expires_in": 900
}

Token Flow

API Secret KeyPOST /session-token/session_tokenUse as Bearer in X-Service-Authorization

VIN Check

Validate a VIN and retrieve verification details including import duty payment status.

GET/services/vin-check/{vin}/

Path Parameters

FieldTypeDescription
vinrequiredStringVehicle Identification Number

✅ Successful Response (200)

FieldTypeDescription
vinStringThe queried VIN
makeStringManufacturer name
modelStringVehicle model
yearIntegerModel year
payment_statusStringImport duty payment status (paid / not_paid)
Response — paidjson
{
  "vin": "1HGCM82633A004352",
  "make": "Honda",
  "model": "Accord",
  "year": 2003,
  "payment_status": "paid"
}
Response — not paidjson
{
  "vin": "1HGCM56706A071917",
  "payment_status": "not_paid"
}

Payment Status Values

FieldTypeDescription
paidValueImport duty has been paid for this vehicle.
not_paidValueImport duty has not been paid for this vehicle.

Vehicle Valuation

Retrieve market valuation data for a vehicle, broken down by condition.

GET/services/vehicle-valuation/{vin}/

Path Parameters

FieldTypeDescription
vinrequiredStringVehicle Identification Number

✅ Successful Response (200)

FieldTypeDescription
vinStringVehicle Identification Number
market_valueArrayValuation breakdown by condition

Market Value Object

FieldTypeDescription
conditionStringVehicle condition (Outstanding, Clean, Average, Rough)
trade_inStringTrade-in value
private_partyStringPrivate sale value
dealer_retailStringDealer retail value
Example Responsejson
{
  "vin": "2T1BR32E75C446393",
  "market_value": [
    { "condition": "Outstanding", "trade_in": "$6,829", "private_party": "$12,153", "dealer_retail": "$15,200" },
    { "condition": "Clean",       "trade_in": "$6,483", "private_party": "$11,473", "dealer_retail": "$14,273" },
    { "condition": "Average",     "trade_in": "$5,906", "private_party": "$10,341", "dealer_retail": "$12,727" },
    { "condition": "Rough",       "trade_in": "$5,157", "private_party": "$8,869",  "dealer_retail": "$10,719" }
  ]
}

Vehicle History

Retrieve a comprehensive vehicle report including ownership, stolen status, market value, sales history, and accident/damage records.

GET/services/vehicle-history/{vin}/

Path Parameters

FieldTypeDescription
vinrequiredStringVehicle Identification Number

Response Sections

FieldTypeDescription
ownership_recordArrayOwnership history with post dates and records
stolen_checkObjectStolen vehicle status and details
market_valueArrayVehicle valuation by condition
sales_historyArrayHistorical sales events
accident_damage_recordsArrayAccident and damage history
Example Responsejson
{
  "vin": "2T1BR32E75C446393",
  "ownership_record": [
    { "post_date": "2019-03-14", "owner_record": "Owner 1" },
    { "post_date": "2021-06-20", "owner_record": "Owner 2" }
  ],
  "stolen_check": {
    "is_stolen": true,
    "license_plate": "T45CYP",
    "color": "BLACK",
    "last_known_location": "EAST BRUNSWICK NJ",
    "date_reported": "2021-05-15"
  },
  "market_value": [
    { "condition": "Outstanding", "trade_in": "$6,829", "private_party": "$12,153", "dealer_retail": "$15,200" },
    { "condition": "Clean", "trade_in": "$6,483", "private_party": "$11,473", "dealer_retail": "$14,273" }
  ],
  "sales_history": [
    { "sale_date": "Oct. 7, 2022", "main_price": "$8,398", "currency": "USD", "mileage": 54802, "location": "Brandywine, MD" }
  ],
  "accident_damage_records": [
    { "post_date": "", "accident_record": "" }
  ]
}

Error Handling

Errors are returned in a standardized format via VehicleValidationCustomAPIException.

Error Response Fields

FieldTypeDescription
messageStringError message
descriptionStringDetailed error description
status_codeIntegerHTTP status code
Example Errorjson
{
  "message": "Invalid VIN",
  "description": "The provided VIN does not match the expected format.",
  "status_code": 400
}

API Summary

POST/session-token/
GET/services/vin-check/{vin}/
GET/services/vehicle-valuation/{vin}/
GET/services/vehicle-history/{vin}/

Need help integrating?

Our developer support team is ready to assist you.

vehiclerecordsproject@gmail.com