API documentation

REST API reference

Base URL: https://vin-decoder-api.orientaloutsourcing.com/api/v1
Authenticate every request with an X-API-Key header. Create keys in the dashboard — no login or refresh tokens required for integrations.

HEADERX-API-KeyRequired for integrations

Authenticate with an API key

Create a key under API keys, then send it on every programmatic request. This is the only auth method for VIN decode integrations.

Example header

X-API-Key: ovd_live_your_key_here

Example request

curl -X POST https://vin-decoder-api.orientaloutsourcing.com/api/v1/decode \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ovd_live_your_key_here" \
  -d '{"vin":"1HGCM82633A004352"}'

Errors: 401 unknown or revoked key · 403 account suspended · 429 rate limit / daily quota exceeded

POST/api/v1/validate-vinQuota: free · unlimited

Validate VIN format

Checks 17-character format and check digit. Never consumes daily quota.

Request

{
  "vin": "1HGCM82633A004352"
}

Response 200

{
  "success": true,
  "data": {
    "vin": "1HGCM82633A004352",
    "isValidFormat": true,
    "checkDigitValid": true
  }
}
POST/api/v1/decodeQuota: 1 per successful decode

Decode a single VIN

Returns structured USA/Canada vehicle specification attributes.

Request

{
  "vin": "1HGCM82633A004352"
}

Response 200

{
  "success": true,
  "data": {
    "requestedVin": "1HGCM82633A004352",
    "normalizedVin": "1HGCM82633A004352",
    "decodeStatus": "success",
    "make": "Honda",
    "model": "Accord",
    "modelYear": 2003,
    "trim": "EX",
    "series": null,
    "bodyClass": "Sedan",
    "doors": 4,
    "engineCylinders": 4,
    "engineDisplacementL": 2.4,
    "engineHP": 160,
    "engineModel": "K24A4",
    "engineConfiguration": "In-Line",
    "fuelTypePrimary": "Gasoline",
    "driveType": "FWD",
    "plantCity": "Marysville",
    "plantState": "Ohio",
    "plantCountry": "USA",
    "gvwr": "Class 1: 6,000 lb or less (2,722 kg or less)",
    "electrificationLevel": null,
    "batteryKWh": null
  }
}
POST/api/v1/decode-from-imageQuota: 1 on successful decode

Decode VIN from image (OCR)

Extracts a VIN from an uploaded image, then decodes it. Failed OCR does not consume quota.

Request

multipart/form-data
file: <image>

Response 200

{
  "success": true,
  "data": {
    "vin": "1HGCM82633A004352",
    "ocrConfidence": 0.94,
    "make": "Honda",
    "model": "Accord",
    "modelYear": 2003
  }
}
POST/api/v1/batch-decodeQuota: 1 per successful VIN

Batch decode

Decode up to 1,000 VINs per request on Business; lower caps on other plans.

Request

{
  "vins": ["1HGCM82633A004352", "5YJSA1E26HF000001"]
}

Response 200

{
  "success": true,
  "data": {
    "results": [],
    "successCount": 2,
    "failureCount": 0
  }
}
GET/api/v1/usageAuth required

Usage summary

Current daily quota consumption for the authenticated account.

Request

GET /api/v1/usage
X-API-Key: ovd_live_...

Response 200

{
  "success": true,
  "data": {
    "dailyQuota": 3333,
    "usedToday": 128,
    "remainingToday": 3205
  }
}