Vincario Account Balance API

Returns the remaining API credits/balance for each service on the authenticated account.

OpenAPI Specification

vincario-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Vincario VIN Decoder 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: []
paths:
  /{apikey}/{controlsum}/decode/{vin}.json:
    get:
      operationId: decodeVin
      tags:
        - Decode
      summary: Decode a VIN into a full vehicle specification.
      description: >-
        Decodes a 17-character VIN and returns the full vehicle specification
        (make, model, model year, body, engine, fuel, transmission and additional
        decoded attributes). The control sum is computed from
        `{VIN}|decode|{apikey}|{secretkey}`.
      parameters:
        - $ref: '#/components/parameters/ApiKey'
        - $ref: '#/components/parameters/ControlSum'
        - $ref: '#/components/parameters/Vin'
      responses:
        '200':
          description: Decoded vehicle specification.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecodeResponse'
        '400':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
  /{apikey}/{controlsum}/vininfo/{vin}.json:
    get:
      operationId: vinInfo
      tags:
        - Vehicle Info
      summary: List the vehicle details available for a VIN.
      description: >-
        Returns the list of vehicle details that can be decoded for the supplied
        VIN. This informational lookup is free of charge. The control sum is
        computed from `{VIN}|vininfo|{apikey}|{secretkey}`.
      parameters:
        - $ref: '#/components/parameters/ApiKey'
        - $ref: '#/components/parameters/ControlSum'
        - $ref: '#/components/parameters/Vin'
      responses:
        '200':
          description: Available decodable details for the VIN.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VinInfoResponse'
        '400':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
  /{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'
  /{apikey}/{controlsum}/stolencheck/{vin}.json:
    get:
      operationId: stolenCheck
      tags:
        - Stolen Check
      summary: Check a VIN against stolen-vehicle databases.
      description: >-
        Performs a real-time check of the VIN against national police databases of
        stolen vehicles (Czech Republic, Hungary, Lithuania, Romania, Slovenia,
        Slovakia) and Vincario's own database. The control sum is computed from
        `{VIN}|stolencheck|{apikey}|{secretkey}`.
      parameters:
        - $ref: '#/components/parameters/ApiKey'
        - $ref: '#/components/parameters/ControlSum'
        - $ref: '#/components/parameters/Vin'
      responses:
        '200':
          description: Stolen-check result for the VIN.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StolenCheckResponse'
        '400':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
  /{apikey}/{controlsum}/balance.json:
    get:
      operationId: getBalance
      tags:
        - Account
      summary: Get remaining account balance.
      description: >-
        Returns the remaining API credits/balance for each service on the
        authenticated account. The control sum is computed from
        `{apikey}|balance|{apikey}|{secretkey}` (the VIN slot is the API key
        because this endpoint is not VIN-scoped).
      parameters:
        - $ref: '#/components/parameters/ApiKey'
        - $ref: '#/components/parameters/ControlSum'
      responses:
        '200':
          description: Remaining balance per service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceResponse'
        '403':
          $ref: '#/components/responses/Error'
components:
  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.
  parameters:
    ApiKey:
      name: apikey
      in: path
      required: true
      description: The account API key (id).
      schema:
        type: string
    ControlSum:
      name: controlsum
      in: path
      required: true
      description: >-
        First 10 characters of `sha1("{lookup}|{id}|{apikey}|{secretkey}")`.
      schema:
        type: string
        minLength: 10
        maxLength: 10
    Vin:
      name: vin
      in: path
      required: true
      description: The 17-character Vehicle Identification Number (uppercase).
      schema:
        type: string
        minLength: 11
        maxLength: 17
        example: WF0MXXGBWM8R43240
  responses:
    Error:
      description: Error response (invalid VIN, bad control sum, or insufficient balance).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    DecodeResponse:
      type: object
      properties:
        decode:
          type: array
          description: List of decoded label/value pairs describing the vehicle.
          items:
            type: object
            properties:
              label:
                type: string
                example: Make
              value:
                type: string
                example: Ford
              id:
                type: integer
                example: 1
        price:
          type: number
          description: Number of credits charged for the request.
          example: 1
        balance:
          type: object
          description: Remaining balance per service after the request.
          additionalProperties:
            type: number
    VinInfoResponse:
      type: object
      properties:
        vininfo:
          type: array
          description: List of vehicle details that can be decoded for the VIN.
          items:
            type: object
            properties:
              label:
                type: string
              id:
                type: integer
    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.
    StolenCheckResponse:
      type: object
      properties:
        vin:
          type: string
          example: WF0MXXGBWM8R43240
        stolen:
          type: boolean
          description: Whether the VIN was found in any stolen-vehicle database.
          example: false
        records:
          type: array
          description: Matching stolen-vehicle records, if any.
          items:
            type: object
            properties:
              source:
                type: string
                description: The database/source where the record was found.
                example: Czech Republic Police
              date:
                type: string
                format: date
    BalanceResponse:
      type: object
      description: Remaining credits per available service.
      properties:
        balance:
          type: object
          additionalProperties:
            type: number
          example:
            decode: 950
            vehicle-market-value: 480
            stolencheck: 480
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message.
          example: Invalid VIN
        code:
          type: integer
          description: Error code.
          example: 400