openapi: 3.0.1
info:
title: Vincario VIN Decoder Account Market Value API
description: 'REST API for the vindecoder.eu service operated by Vincario. The API decodes a Vehicle Identification Number (VIN) into a full vehicle specification and also provides vehicle market value, real-time stolen-vehicle checks, the list of decodable vehicle details, and the remaining account balance.
Authentication uses an API key (id) and a secret key. Each request carries a per-request control sum in the URL path. The control sum is the first 10 characters of the SHA1 hash of the pipe-delimited string `{lookup}|{id}|{apikey}|{secretkey}`, where `{lookup}` is the uppercased VIN for VIN-based endpoints (decode, vininfo, vehicle-market-value, stolencheck) and the API key itself for the balance endpoint, and `{id}` is the endpoint identifier (for example `decode`, `vininfo`, `vehicle-market-value`, `stolencheck`, `balance`). The secret key is never transmitted; it is only used to derive the control sum. The path layout is `/{apikey}/{controlsum}/{id}/{vin}.json`.'
termsOfService: https://vindecoder.eu/terms
contact:
name: Vincario Support
url: https://vincario.com
version: '3.2'
servers:
- url: https://api.vindecoder.eu/3.2
description: Vincario VIN Decoder API v3.2
security:
- signedPath: []
tags:
- name: Market Value
paths:
/{apikey}/{controlsum}/vehicle-market-value/{vin}.json:
get:
operationId: vehicleMarketValue
tags:
- Market Value
summary: Get statistical market value for a vehicle.
description: Returns statistical data about the price and odometer of vehicles on the market matching the decoded VIN, together with the input parameters used for the computation. The control sum is computed from `{VIN}|vehicle-market-value|{apikey}|{secretkey}`.
parameters:
- $ref: '#/components/parameters/ApiKey'
- $ref: '#/components/parameters/ControlSum'
- $ref: '#/components/parameters/Vin'
responses:
'200':
description: Market value statistics for the vehicle.
content:
application/json:
schema:
$ref: '#/components/schemas/MarketValueResponse'
'400':
$ref: '#/components/responses/Error'
'403':
$ref: '#/components/responses/Error'
components:
schemas:
MarketValueResponse:
type: object
properties:
vin:
type: string
example: WF0MXXGBWM8R43240
price:
type: object
description: Statistical price data for matching vehicles on the market.
properties:
currency:
type: string
example: EUR
count:
type: integer
example: 124
market_price_min:
type: number
example: 6500
market_price_max:
type: number
example: 12900
market_price_mean:
type: number
example: 9100
odometer:
type: object
description: Statistical odometer data for matching vehicles on the market.
properties:
unit:
type: string
example: km
count:
type: integer
example: 124
odometer_min:
type: number
example: 45000
odometer_max:
type: number
example: 280000
odometer_mean:
type: number
example: 160000
input:
type: object
description: Input parameters used for the market value computation.
ErrorResponse:
type: object
properties:
error:
type: string
description: Human-readable error message.
example: Invalid VIN
code:
type: integer
description: Error code.
example: 400
parameters:
ApiKey:
name: apikey
in: path
required: true
description: The account API key (id).
schema:
type: string
Vin:
name: vin
in: path
required: true
description: The 17-character Vehicle Identification Number (uppercase).
schema:
type: string
minLength: 11
maxLength: 17
example: WF0MXXGBWM8R43240
ControlSum:
name: controlsum
in: path
required: true
description: First 10 characters of `sha1("{lookup}|{id}|{apikey}|{secretkey}")`.
schema:
type: string
minLength: 10
maxLength: 10
responses:
Error:
description: Error response (invalid VIN, bad control sum, or insufficient balance).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
signedPath:
type: apiKey
in: query
name: controlsum
description: Path-signed authentication. The API key (id) and a per-request SHA1 control sum are passed as URL path segments rather than headers or query parameters; this scheme is declared as a placeholder because OpenAPI 3.0 cannot natively express path-segment-based signed credentials. The control sum is `substr(sha1("{lookup}|{id}|{apikey}|{secretkey}"), 0, 10)`. The secret key is never sent over the wire.