Developer Reference

API Documentation

Everything you need to integrate VINrichment into your application. Simple REST API, JSON responses, API key authentication.

Authentication · Base URL · Endpoints · Decode VIN · Stats · Quickstart · Data Segments · Errors · Rate Limiting

Authentication

All API requests require an API key sent via the X-Api-Key header.

Request Header
X-Api-Key: your_api_key_here
Content-Type: application/json
Accept: application/json

Getting an API Key

API keys are issued on request. Contact us to get your key. Each key has a configurable rate limit and can be scoped to specific data segments.

Base URL

https://backend.datadyne.dev/api/vinrichment

All endpoints below are relative to this base URL.

Quickstart

Get your first decode running in under 5 minutes.

Step 1

Get an API key

Request access through contact. Keys are issued with plan and attribute scope settings.

Step 2

Call decode endpoint

Send a 17-character VIN to /decode with your API key in the X-Api-Key header.

Step 3

Parse segments

Use structured segment objects for vehicle identity, engine, shop specs, and service interval data.

Step 4

Ship to production

Handle 429 and 5xx retries, persist decoded VINs, and use attribute filtering for smaller payloads.

Minimal cURL Example
curl -X POST https://backend.datadyne.dev/api/vinrichment/decode \
  -H "X-Api-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"vin":"1HGCV1F33LA000001"}'

Endpoints

Method Endpoint Description
POST /decode Decode a single VIN
GET /stats Get database statistics and coverage info

POST /decode

Decode a single VIN and get complete vehicle data with enriched service specifications.

Request Body

Parameter Type Required Description
vin string Yes 17-character Vehicle Identification Number

Example Request

POST /decode
curl -X POST https://backend.datadyne.dev/api/vinrichment/decode \
  -H "X-Api-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"vin": "1HGCV1F33LA000001"}'

Example Response

200 OK
{
  "success": true,
  "data": {
    "vin": "1HGCV1F33LA000001",
    "cached": false,
    "segments": {
      "vehicle": {
        "year": 2020,
        "make": "Honda",
        "model": "Accord",
        "trim": "Sport 1.5T",
        "body_class": "Sedan/Saloon"
      },
      "manufacturing": {
        "manufacturer": "Honda",
        "plant_city": "Marysville",
        "plant_state": "Ohio",
        "plant_country": "United States"
      },
      "engine": {
        "displacement_l": "1.5",
        "fuel_type": "Gasoline",
        "horsepower": "192",
        "cylinders": "4",
        "engine_configuration": "In-Line",
        "turbo": "Yes"
      },
      "transmission": {
        "type": "CVT",
        "speeds": "1"
      },
      "drivetrain": {
        "drive_type": "FWD"
      },
      "dimensions": {
        "wheelbase_in": "111.4",
        "overall_length_in": "192.2",
        "overall_width_in": "73.3",
        "overall_height_in": "57.1"
      },
      "weight": {
        "curb_weight_lb": "3131",
        "gvwr_lb": "4354"
      },
      "fuel": {
        "fuel_type_primary": "Gasoline"
      },
      "safety": {
        "abs": "Standard",
        "esc": "Standard",
        "tpms": "Direct",
        "backup_camera": "Standard"
      },
      "airbags": {
        "front": "1st Row (Driver and Passenger)",
        "side": "1st and 2nd Rows",
        "curtain": "1st and 2nd Rows",
        "knee": "1st Row (Driver and Passenger)"
      },
      "shop_specs": {
        "fluids": {
          "engine_oil_type": "0W-20 Full Synthetic",
          "engine_oil_capacity": "3.4 quarts (with filter)",
          "coolant_type": "Honda Type 2 (Blue)",
          "brake_fluid": "DOT 3",
          "transmission_fluid": "Honda HCF-2"
        },
        "torque_specs": {
          "lug_nuts": "80 ft-lbs",
          "oil_drain_plug": "29 ft-lbs",
          "spark_plugs": "13 ft-lbs"
        },
        "tires_wheels": {
          "front_tire_size": "225/50R17",
          "rear_tire_size": "225/50R17",
          "tire_pressure_psi": "33",
          "bolt_pattern": "5x114.3"
        },
        "electrical": {
          "battery_group": "51R",
          "battery_cca": "410"
        }
      },
      "service_intervals": {
        "oil_change": "7,500 miles / 12 months",
        "brake_inspection": "15,000 miles",
        "coolant_flush": "60,000 miles / 5 years",
        "spark_plugs": "60,000 miles",
        "transmission_fluid": "60,000 miles"
      }
    }
  }
}

GET /stats

Get database statistics including total vehicles, VIN lookups, and coverage information. No API key required.

Example Request

GET /stats
curl https://backend.datadyne.dev/api/vinrichment/stats

Example Response

200 OK
{
  "total_vehicles": 12847,
  "total_lookups": 3291,
  "unique_makes": 48,
  "year_range": {
    "min": 1981,
    "max": 2026
  },
  "service_specs_count": 856,
  "cache_hit_rate": "73.2%"
}

Data Segments

Each decoded VIN returns data organized into structured segments. Here's what's included in each:

vehicle

Core vehicle identification data.

year make model trim body_class

engine

Engine specifications and performance data.

displacement_l fuel_type horsepower cylinders engine_configuration turbo

shop_specs.fluids

OEM fluid types and capacities.

engine_oil_type engine_oil_capacity coolant_type brake_fluid transmission_fluid power_steering_fluid differential_fluid

shop_specs.torque_specs

Torque specifications with units for common service points.

lug_nuts oil_drain_plug spark_plugs intake_manifold exhaust_manifold

shop_specs.tires_wheels

OEM tire and wheel specifications.

front_tire_size rear_tire_size tire_pressure_psi wheel_diameter bolt_pattern hub_bore

shop_specs.electrical

Battery and electrical system specifications.

battery_group battery_cca battery_voltage alternator_output

service_intervals

Manufacturer-recommended service intervals.

oil_change brake_inspection coolant_flush transmission_fluid spark_plugs air_filter

manufacturing

Assembly plant and manufacturer details.

manufacturer plant_city plant_state plant_country

transmission

Transmission type and configuration.

type speeds

drivetrain

Drive type configuration.

drive_type

dimensions

Vehicle dimensions and measurements.

wheelbase_in overall_length_in overall_width_in overall_height_in

weight

Curb weight and gross vehicle weight rating.

curb_weight_lb gvwr_lb

fuel

Primary fuel type information.

fuel_type_primary

safety

Active safety systems and driver assistance features.

abs esc tpms backup_camera

airbags

Airbag locations and coverage.

front side curtain knee

Error Handling

All errors return a consistent JSON structure with an appropriate HTTP status code.

Error Response
{
  "success": false,
  "error": "Invalid VIN format. Must be 17 characters."
}
HTTP Code Meaning Common Cause
400 Bad Request Invalid VIN format or missing fields
401 Unauthorized Missing or invalid API key
429 Too Many Requests Rate limit exceeded for this API key
500 Server Error Internal error — contact support

Rate Limiting

Each API key has a monthly lookup limit. Cached VINs (repeat lookups of previously decoded VINs) do not count against your rate limit.

Pro Tip

VINs are cached after the first lookup. If you decode the same VIN again, it returns instantly and doesn't count against your rate limit. This lets you re-query vehicles you've already looked up without consuming additional lookup volume.

Production Best Practices

Retry strategy

Use exponential backoff for transient 5xx responses. Respect 429 limits and avoid immediate retry storms.

Cache decoded VINs

Persist VIN results in your application cache to reduce round trips and protect your monthly lookup budget.

Validate input early

Reject VINs that are not 17 characters before calling the API to prevent avoidable request failures.

Use attribute scoping

Request only the fields your workflow needs for faster responses and cleaner data contracts.

Ready to Start Building?

Get your API key and make your first VIN decode in minutes.

Get API Key