VINData AAMVA Reports

Access and generate American Association of Motor Vehicle Administrators (AAMVA) VIN Data Reports via VINData integration.

MarketCheck partners with VINData for the National Motor Vehicle Title Information System (NMVTIS) VIN data report. This API provides access to AAMVA VIN Data Reports for Vehicle Title information, offering both retrieval of existing reports and generation of new ones.

The VINData API leverages the NMVTIS data to provide comprehensive vehicle title history, including title information, odometer readings, brand history, and salvage records.

Users must accept the terms and conditions on the Universe Portal to access these endpoints. Check the Terms and Conditions for more information.

API Endpoints & Features

The VINData API offers two distinct endpoints for different use cases:

Endpoint TypeEndpointFeatures
Access Report/v2/vindata/access-report/aamva/{vin}Retrieve existing AAMVA report
Generate Report/v2/vindata/generate-report/aamva/{vin}Create new AAMVA report
Generated reports expire after 90 days. Each Report generation request will incur charges.

Base Path

The base path varies depending on whether you want to access an existing report or generate a new one:

Access Existing Report:

GET https://api.marketcheck.com/v2/vindata/access-report/aamva/{vin}

Generate New Report:

GET https://api.marketcheck.com/v2/vindata/generate-report/aamva/{vin}

Path Parameters:

  • vin: The 17-character VIN of the vehicle for AAMVA report operations.

The following example demonstrate request to access the report endpoint:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/vindata/access-report/aamva/1FAHP3F28CL148530',
params: {api_key: 'YOUR_API_KEY'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

Request

The VINData API provides access to AAMVA VIN Data Reports through both retrieval and generation endpoints. Both endpoints share the same parameter requirements for consistent API usage.

Parameters

Both endpoints of VINData AAMVA reports API share the same parameter requirements:

1 Params
api_key
string required

Your MarketCheck API authentication key. Required for every request, unless OAuth is used.

Required Parameters

The following parameters are required for both access and generation requests:

  • vin - The 17-character VIN of the vehicle (provided in URL path)
    • Must be exactly 17 characters in length
    • Case-insensitive string that must be properly formatted

Response

Both actions, generating a new report and accessing an existing one, return the same response format with detailed AAMVA VINdata reports.

Schema

Both endpoints return the same response structure:

interface VINDataResponse {
  productName: string; // VINData product identifier (e.g., "NMVTIS")
  titleInformation: {
    date: string; // ISO date of title event
    state: string; // State where title was issued
    type: string; // Title type: "Current" or "Historical"
    reportedOdometer: string; // Formatted odometer reading with commas
    measure: string; // Measurement unit abbreviation
    event: string; // Description of title event
    source: string; // Source of title information
    vin: string; // Vehicle Identification Number
    vinChanged: boolean; // Whether VIN was changed
  }[]; // Array of title information records

  titleBrandReported: {
    code: string; // Brand code
    date: string; // Date brand was reported
    state: string; // State where brand was reported
    brand: string; // Brand type
    description: string; // Brand description
    color: string; // Brand severity indicator
    flag: string; // Additional brand flags
  }[]; // Array of title brand records (empty array if no brands)

  junkSalvageTotalLoss: {
    date: string; // Date of junk/salvage event
    reportedEntity: string; // Entity that reported the event
    reportedEntityType: string; // Type of reporting entity
    disposition: string; // Disposition of the vehicle
    source: string; // Source of the information
    color: string; // Severity indicator
  }[]; // Array of junk/salvage/total loss records (empty array if none)

  odometerInformation: {
    date: string; // ISO date of odometer reading
    type: string; // Type of odometer reading
    source: string; // Source of odometer information
    reportedOdometer: number; // Odometer reading as numeric value
    measure: string; // Unit of measurement
  }[]; // Array of odometer information records

  summary: {
    make: string; // Vehicle manufacturer
    model: string; // Vehicle model
    year: number; // Model year
    type: string; // Vehicle type
    empty: boolean; // Whether summary data is empty
  }; // Vehicle summary information

  trimLevels: {
    Default: {
      General: object; // Basic vehicle information (make, model, year, VIN pattern, etc.)
      "Active Safety System": object; // Safety system specifications
      "Passive Safety System": object; // Passive safety features
      Exterior: object; // Exterior specifications and dimensions
      Engine: object; // Engine specifications and performance data
    };
  }; // Detailed vehicle specifications organized by category

  reportSummary: {
    message: string; // Summary message about vehicle history
    color: string; // Color indicator for report status
  }; // Overall report summary and status
}

Success Response

  • 200 OK - Returns a JSON object containing comprehensive AAMVA VINData Report
    • Includes title information and history
    • Contains odometer readings and brand information
    • Provides salvage and total loss records

Error Response

Status CodeDescriptionCommon Causes
400Bad RequestVIN is not exactly 17 characters in length
401UnauthorizedMissing/invalid API key
403ForbiddenAPI key does not have access to this endpoint
422Unprocessable EntityReport not found for the specified VIN
429Too Many RequestsRate limit exceeded
500Internal Server ErrorReport cannot be accessed/generated for technical reasons
502Bad GatewayIssues with upstream services
503Service UnavailableAPI maintenance or downtime

Error Response Format

Most error responses follow this structure, except for 502 and 503 errors

{
  "code": <HTTP status code>,
  "message": "<Error message describing the issue>"
}

Use Cases & Examples

Access an Existing AAMVA VINData Report

Use this to retrieve a previously generated AAMVA title report for a specific VIN. It does not create a new report, making it a cost-effective way to access existing title data.

Use this when you need to:

  • Retrieve an already generated report
  • Avoid duplicate report generation costs

If no report has been generated for the VIN before, this request will return an error. To create a new one, use the report generation action.

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/vindata/access-report/aamva/1FAHP3F28CL148530',
params: {api_key: 'YOUR_API_KEY'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

Generate a New AAMVA VINData Report

Use this to create a new AAMVA title report for a given VIN. A new report is generated each time, ensuring the data is always up to date—regardless of whether a report for the same VIN was generated earlier.

Use this when you need to:

  • Create fresh title information reports
  • Ensure most current data availability

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/vindata/generate-report/aamva/1FAHP3F28CL148530',
params: {api_key: 'YOUR_API_KEY'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

See Also