ImportOS · Docs
API reference

GET /v1/vin/{vin}

Decode a VIN and list known lots/listings

Decode a VIN and list known lots/listings

Decodes the VIN (NHTSA vPIC + WMI country/US-origin) and returns lots and listings with this VIN that the platform has seen (active and removed). If the decoder is down, specs is null with a warning and cached listings are still returned. Requires scope read:listings.

  • Authentication: header Authorization: Bearer rv_live_... (API keys and scopes)
  • Required scope: read:listings
Descriptions of the operation, parameters and fields come from the OpenAPI specification (openapi.json).

Parameters

FieldInTypeRequiredDescription
vinpathstringyes17-character VIN (letters I, O, Q are not allowed). Spaces and dashes are ignored.

Responses

200

Decoded VIN and known listings.

application/json · Schema: VinResponse

FieldTypeRequiredDescription
vinstringyes
validationobjectyes
validation.validbooleanyes
validation.warningsstring[]yes
validation.check_digitobjectyes
specsobjectyesDecoded specs (NHTSA vPIC + WMI). null if the decoder is unavailable.
specs.vinstringyes
specs.makestring | nullyes
specs.modelstring | nullyes
specs.yearinteger | nullyes
specs.trimstring | nullyes
specs.body"sedan" | "hatchback" | "wagon" | "suv" | "crossover" | "coupe" | "convertible" | "minivan" | "van" | "pickup" | "truck" | "motorcycle" | "other" | nullyes
specs.fuel"petrol" | "diesel" | "hybrid" | "phev" | "ev" | "lpg" | "cng" | "hydrogen" | "other" | nullyes
specs.engineCcnumber | nullyes
specs.cylindersnumber | nullyes
specs.powerKwnumber | nullyes
specs.drive"fwd" | "rwd" | "awd" | "4wd" | nullyes
specs.gearbox"manual" | "automatic" | "cvt" | "robot" | "other" | nullyes
specs.plantCountrystring | nullyes
specs.wmiCountrystring | nullyes
specs.isUsOriginboolean | nullyes
decoderobjectyes
decoder.mode"live" | "test" | "mock"yes
decoder.errorstring | nullyes
listingsobject[]yesLots/listings with this VIN known to the platform cache, newest first.
listings[].source_keystringno
listings[].external_idstringno
listings[].urlstringno
listings[].titlestringno
listings[].status"active" | "removed"noremoved: the listing disappeared from the source (usually sold or taken down).
listings[].priceobjectno
listings[].price_eurnumber | nullno
listings[].price_type"fixed" | "current_bid" | "buy_now" | "estimate" | "unknown"no
listings[].mileage_kmnumber | nullno
listings[].market"us" | "eu" | "cn" | "kr" | "ua" | "ge"no
listings[].auctionobjectno
listings[].location_countrystring | nullno
listings[].first_seen_atstring (date-time)no
listings[].last_seen_atstring (date-time)no
listings[].removed_atstring | null (date-time)no
listings[].fetched_atstring (date-time)no
warningsobject[]yes
warnings[].codestringno
warnings[].messagestringno

400

Invalid request parameters or body (code validation_error).

application/problem+json · Schema: Problem

401

Missing, malformed, unknown, revoked or expired API key (code unauthorized).

application/problem+json · Schema: Problem

403

The API key lacks the scope required by this endpoint (code insufficient_scope).

application/problem+json · Schema: Problem

429

Rate limit exceeded for the tenant plan (code rate_limited). Wait Retry-After seconds.

application/problem+json · Schema: Problem

Example

curl -s "https://api.importos.app/v1/vin/1HGCM82633A004352" \
  -H "Authorization: Bearer $IMPORTOS_API_KEY"

On this page