Endpoint
GET /api/v1/vin/{vin}
Pass a 17-character VIN in the path. The server trims, uppercases, validates, and decodes it.
Developer docs
Create an account, generate an API key, and call the VIN endpoint with Bearer authentication. Public docs cover the basics; account pages show your actual keys, usage, and billing state.
curl -X GET "https://vinstate.com/api/v1/vin/1HGCM82633A004352" \
-H "Accept: application/json" \
-H "Authorization: Bearer sk-your-api-key"
Endpoint
Pass a 17-character VIN in the path. The server trims, uppercases, validates, and decodes it.
Authentication
Send Authorization: Bearer sk-your-api-key with every API request.
Billing
Successful lookups use included monthly requests first. Overage uses credits at 1 credit = $0.01.
Success response
{
"success": true,
"request_id": "8d5578ad-27c0-46b8-b0f1-5e6f154ca8d6",
"data": [
{
"vin": "1HGCM82633A004352",
"decoded": {
"vehicle": {
"car": "2003 Honda Accord EX"
},
"wmi": {
"make": "Honda"
}
}
}
],
"meta": {
"billed": true,
"funding_source": "included",
"included_requests_charged": 1,
"charged_credits": 0
}
}
Error codes
Missing or unknown API key.
The key or account cannot authenticate requests.
The API key exceeded the per-minute limit.
The normalized VIN failed validation.
No included quota or credits remained.
No VIN record was found.
The VIN lookup service is temporarily unavailable.
Examples
curl -X GET "https://vinstate.com/api/v1/vin/1HGCM82633A004352" \
-H "Accept: application/json" \
-H "Authorization: Bearer sk-your-api-key"
const response = await fetch(
"https://vinstate.com/api/v1/vin/1HGCM82633A004352",
{
headers: {
"Accept": "application/json",
"Authorization": "Bearer sk-your-api-key",
},
}
);
const data = await response.json();
<?php
$ch = curl_init("https://vinstate.com/api/v1/vin/1HGCM82633A004352");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Authorization: Bearer sk-your-api-key",
],
]);
$response = curl_exec($ch);
curl_close($ch);