Endpoint

GET https://vindecodercheck.com/api/vin/{vin}

Auth: none required for the free per-IP allowance. An IPNOVA API key (free account at api.ipnova.com) applies your plan allowance instead: send it as the X-Api-Key header or the ?key= query parameter. Keyed responses carry X-Credits-Remaining and X-Credits-Used.

Plans

One key. Twelve APIs.

A free IPNOVA API account gives you 5,000 lookups a month across every API below, 60 a minute, no card, for evaluation and small projects. Paid plans from $19 a month for production volumes, with a commercial licence and a hard cap instead of overage billing.

Card BINVINSWIFT/BICIBANHS tariffDisposable emailIP dataPhoneHolidaysMAC vendorPostal codeAirport
Create your free key

Takes a minute. Send it as X-Api-Key or ?key=. This API costs 3 credits per call.

Without a key this API answers 100 requests a day per IP address, for evaluation and personal use. Try it: curl https://vindecodercheck.com/api/vin/1HGCM82633A004352

Example

curl https://vindecodercheck.com/api/vin/1HGCM82633A004352

{
  "success": true,
  "vin": "1HGCM82633A004352",
  "make": "HONDA",
  "model": "Accord",
  "model_year": "2003",
  "manufacturer": "AMERICAN HONDA MOTOR CO., INC.",
  "plant_city": "MARYSVILLE",
  "plant_country": "UNITED STATES (USA)",
  "vehicle_type": "PASSENGER CAR",
  "body_class": "Coupe",
  "engine_cylinders": "6",
  "displacement_l": "2.998832712",
  "fuel_type_primary": "Gasoline",
  "transmission_style": "Automatic",
  "doors": "2",
  "g_v_w_r": "Class 1C: 4,001 - 5,000 lb (1,814 - 2,268 kg)",
  "trim": "EX-V6",
  "error_text": "0 - VIN decoded clean. Check Digit (9th position) is correct",
  "specs_page": "https://vindecodercheck.com/car/2003-honda-accord",
  "recalls_on_record": 15,
  "source": "NHTSA vPIC (US public domain)",
  "docs": "https://vindecodercheck.com/vin-api"
}

Behaviour and limits

  • 17-character VINs decode fully; partial VINs of 11+ characters are accepted for structural decoding.
  • Each VIN is decoded upstream once, ever - after that it serves from our cache, so repeated integration calls are fast and place zero load on the government source.
  • 100 requests a day and 20 a minute, per IP, no key needed.
  • Responses are no-store; we do not log which client decoded which VIN.
  • Build facts only: no ownership, title or accident data, ever.
  • Machine-readable spec at /openapi.json.
  • No code at all: the free embeddable VIN decoder widget puts this API on your page with one script tag.

Status codes

Every non-200 response uses the same envelope: success: false, an error flag, a machine-readable reason, a human message, and a docs link back to this page.

CodeReasonMeaning
400invalid_inputInvalid VIN (wrong length, or contains the letters I, O or Q, which never appear in a VIN).
401invalid_keyThe supplied API key is unknown or revoked.
429rate_limitToo many requests in the last minute (Retry-After: 60).
429daily_limitKeyless per-IP daily cap reached.
429credits_exhaustedKeyed monthly allowance used up.
502upstream_unavailableUpstream decoder (NHTSA vPIC) unavailable, try again shortly.

Example, an invalid VIN:

{"success": false, "error": true, "reason": "invalid_input", "message": "Provide a valid 17-character VIN.", "docs": "https://vindecodercheck.com/vin-api"}