VIN Decode API
Plate2VIN
Batch Decoding
JSON / XML / PDF

VinLink API Documentation and Integration Guide

Decode VINs, license plates, and vehicle data at scale with structured JSON, XML, and PDF vehicle reports.

VinLink gives developers and business teams programmatic access to vehicle data from a VIN or US license plate. Use the API to retrieve structured vehicle reports including year, make, model, trim, technical specifications, warranty data, MSRP, ACES mapping, and manufacturer recall information.

Whether you are building a vehicle marketplace, service platform, insurance workflow, parts catalog, fleet tool, compliance process, or internal data operation, this guide helps you choose the right VinLink usage pattern and reach the detailed documentation faster.

Developers

Business Teams

High-Volume Users


What Can You Do With VinLink?

Use caseBest starting pointTypical user
Decode one VIN into vehicle detailsVIN ReportsDeveloper, product team, operations
Turn a license plate into one or more VINsPlate-to-VIN LookupBusiness workflow, intake form, mobile app
Get a vehicle report directly from a platePlate + Vehicle ReportDealer tools, marketplaces, insurance workflows
Process many VINs at onceBatch DecodingData teams, operations, high-volume users
Embed vehicle data in an app or backendAPI Key AuthenticationDevelopers, engineering teams
Generate customer-ready vehicle documentsPDF ReportsBusiness teams, support teams, customer-facing apps

Choose Your Integration Path

Test VinLink Quickly

Start with a login token, call a BASIC VIN report, and request JSON. This confirms that account access, authentication, and report permissions are working.

  1. Log in and receive an access token.
  2. Call a VIN report endpoint.
  3. Request JSON with Accept: application/json.

Build a Production Integration

Use API keys instead of embedding account credentials. API keys can be named, scoped, restricted, revoked individually, and rotated without changing the account password.

  1. Create a scoped API key.
  2. Exchange the key for a short-lived JWT token.
  3. Use the JWT token for report requests.

Start From a License Plate

Use Plate-to-VIN when your workflow starts with a US license plate and state instead of a VIN. Composite endpoints can combine plate lookup with a BASIC or BASIC_PLUS report.

Billing note: plate workflows may involve two charges: one for the plate lookup product and another for the vehicle report if you request a full report.

Process Thousands of VINs

Use batch decoding for larger jobs. Submit a list of VINs, validate the file or request, and receive completed results when processing finishes.

  • Inventory imports
  • Catalog enrichment
  • Recurring operations jobs

Base URL

All current v1 API endpoints use:

https://api.vinlink.com

Reports use the /report path family. Account, authentication, API key, and user-related endpoints are available at the root API level.

Legacy compatibility: legacy service hosts remain available for existing integrations, but new development should use api.vinlink.com.

Authentication Overview

VinLink report endpoints require a JWT bearer token. There are two main authentication patterns: password login for testing and account-level setup, and API key authentication for production applications and automation.

PatternBest forHow it works
Password loginTesting, account-level access, initial setupExchange account credentials for an access token and refresh token
API key authenticationProduction apps, automation, team accessExchange a scoped API key for a short-lived JWT token

Password Login Flow

curl -X POST https://api.vinlink.com/user/login \
  -H "Content-Type: application/json" \
  -d '{
    "login": "your@email.com",
    "password": "yourpassword"
  }'

A successful response includes:

{
  "accessToken": "eyJhbGci...",
  "refreshToken": "eyJhbGci...",
  "tokenType": "Bearer",
  "expiresIn": 3600
}

Use the access token in report requests:

Authorization: Bearer eyJhbGci...

When the access token expires, use the refresh token to request a new token pair.

Quick Start: Request Your First VIN Report

This example retrieves a BASIC vehicle report as JSON.

TOKEN=$(curl -s -X POST https://api.vinlink.com/user/login \
  -H "Content-Type: application/json" \
  -d '{"login":"your@email.com","password":"yourpassword"}' \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['accessToken'])")

curl "https://api.vinlink.com/report/v1/report/BASIC?vin=1HGBH41JXMN109186" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"

Use this quick start when you want to confirm authentication, report access, JSON delivery, and the API response fields your workflow needs.

VIN Report Products

Report typeIncludesBest for
BASICYear, make, model, trim, NHTSA-required fields, ACES mappingsFast identification, search, catalog matching
BASIC_PLUSBASIC data plus dimensions, warranty, and MSRP pricingListings, intake workflows, richer vehicle records
ENHANCEDBASIC data plus technical specifications and optional equipmentDetailed vehicle pages, service workflows, valuation support
RECALLBASIC data plus manufacturer recall and safety campaign dataSafety checks, compliance workflows, service outreach

Custom report configurations may be available for teams with specific data requirements. Contact VinLink to discuss your use case.

VIN Report Endpoints

VinLink accepts both GET and POST request patterns.

GET  /report/v1/report/{type}?vin={VIN}
POST /report/v1/report/{type}

Parameters

ParameterRequiredDescription
vinYes17-character Vehicle Identification Number
typeYesReport product, such as BASIC, BASIC_PLUS, ENHANCED, or RECALL
pdfNoUse YES to request PDF output
xslNoURL of a custom XSL stylesheet for XML transformation
aaiaNoInclude AAIA parts mapping. Default is YES

Response Formats

Accept headerResponse format
application/jsonJSON
text/xmlXML
application/pdfPDF

Example: JSON VIN Report

curl "https://api.vinlink.com/report/v1/report/BASIC?vin=1HGBH41JXMN109186" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"

Example: PDF VIN Report

curl "https://api.vinlink.com/report/v1/report/BASIC_PLUS?vin=1HGBH41JXMN109186" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/pdf" \
  --output report.pdf

License Plate Lookup

VinLink supports US license plate lookup workflows. These are useful when your user, customer, or internal system starts with a plate number and state instead of a VIN.

Raw Plate-to-VIN Lookup

Use this when you only need VINs associated with a plate.

GET  /report/v1/plate/vins?plateState={state}&plateNumber={plate}
POST /report/v1/plate/vins
curl "https://api.vinlink.com/report/v1/plate/vins?plateState=FL&plateNumber=ABC1234" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"

Plate Lookup With Vehicle Report

Use composite report endpoints when you want a plate lookup and vehicle report in one request.

EndpointReport included
/report/v1/report/plate_basicBASIC report for each VIN found
/report/v1/report/plate_basic_plusBASIC_PLUS report for each VIN found
curl "https://api.vinlink.com/report/v1/report/plate_basic_plus?plateState=CA&plateNumber=8ABC234" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"

If multiple VINs are found for the plate, the response may include a composite result covering each matched vehicle.

Batch Decoding

Batch decoding is designed for larger VIN processing jobs. Instead of calling the API one VIN at a time, submit a list of VINs and receive results after processing completes.

  • Enrich a large inventory file
  • Validate VIN quality before processing
  • Process recurring data feeds
  • Support operational teams with large vehicle datasets
  • Reduce manual lookup work

Batch Workflow

  1. Prepare a file or list with one VIN per line.
  2. Validate the VINs before processing.
  3. Submit the batch job.
  4. Optionally provide an email for completion notification.
  5. Retrieve or receive the completed results.

The public file workflow supports a text file with one VIN per line and validates the file before processing. Validation returns the count of valid and invalid VINs before charges are applied.

POST /user/batchdecoding
POST /user/batchdecoding/validate

Verify Your Setup Before Making Charged Requests

Before generating reports, use the test endpoint to confirm that your token is valid and your scopes are active.

curl https://api.vinlink.com/report/v1/report/test \
  -H "Authorization: Bearer $TOKEN"

This is a good first diagnostic step when you are setting up a new environment, rotating credentials, or debugging authorization issues.

HTTP Status Codes

CodeMeaningWhat to check
200Report generated successfullyContinue processing the result
400Missing or invalid VIN, plate, or report typeCheck request parameters
401Missing, expired, or invalid tokenRe-authenticate or refresh token
402Insufficient account balanceCheck account funding or pricing
404VIN, key, or requested resource not foundConfirm identifiers and endpoint path

Supported Vehicle Types

VinLink covers multiple vehicle classes, including passenger cars, light trucks and SUVs, heavy trucks, motorcycles, recreational vehicles, buses, and trailers.

Data availability can vary by vehicle type and report product. For workflows that depend on specific fields, test representative VINs before committing to a production data model.

Pricing and Report Selection

VinLink is a prepaid service. Standard report pricing includes separate products for BASIC, BASIC_PLUS, ENHANCED, RECALL, and Plate2VIN. Volume discount options may be available for customers planning to decode more than 1,000 VINs annually.

Not every workflow needs the deepest report. Use BASIC for fast vehicle identification, BASIC_PLUS when listings or customer workflows need more detail, ENHANCED when technical specifications matter, and RECALL when safety campaign information is the core requirement.

API Keys for Production Use

For production integrations, API keys are usually the safest authentication pattern. They help keep account credentials out of applications and give teams more control over access.

  • Name keys by application, service, team, or environment
  • Scope keys to specific operations
  • Restrict keys by report type
  • Limit keys by IP address where practical
  • Revoke or rotate keys without changing account credentials
EnvironmentSuggested key strategy
DevelopmentSeparate key with limited report access
StagingSeparate key that mirrors production scopes where practical
ProductionDedicated key with only the required report types
Mobile appScoped key with rapid revocation plan
Internal automationIP-restricted key where possible

Common Implementation Patterns

VIN-First Application

Best for marketplaces, catalog enrichment, service intake, and systems where users already provide a VIN.

Recommended report: BASIC or BASIC_PLUS

Plate-First Application

Best for mobile workflows, field operations, consumer forms, and cases where users are more likely to know a license plate than a VIN.

Recommended report: plate_basic or plate_basic_plus

High-Volume Data Enrichment

Best for inventory imports, data cleanup, and periodic data operations.

Recommended method: batch decoding

Customer-Ready Report Generation

Best for teams that need a readable document rather than only structured data.

Recommended format: application/pdf

Frequently Asked Questions

What is the fastest way to test VinLink?

Log in with your account credentials, request a JWT token, and call a BASIC VIN report with JSON as the response format.

Should I use password login or API keys?

Use password login for setup and account-level management. Use API keys for production applications, automation, team workflows, and any integration where credentials need to be scoped, rotated, or revoked independently.

Can I get data from a license plate instead of a VIN?

Yes. VinLink supports US plate lookup using plate number and state. You can request raw VIN matches or use composite endpoints that return a vehicle report from the plate workflow.

Can VinLink return PDF reports?

Yes. VIN report endpoints can return PDF when requested with the appropriate response format.

Can I process many VINs at once?

Yes. Use batch decoding for large VIN lists. VinLink can validate a list before processing and can notify you when the batch is complete.

Which report type should I choose?

Use BASIC for core vehicle identification, BASIC_PLUS for richer business workflows, ENHANCED for technical details and equipment, and RECALL for safety campaign information.

Where is the full API reference?

The full interactive reference is available in Swagger UI at https://api.vinlink.com/swagger-ui/index.html.

Ready to Build With VinLink?

Open the interactive API reference, create an account, or contact VinLink for help choosing the right vehicle report workflow.