Volkswagen OKAPI - Open Konfigurator API

The VW OKAPI API provides access to Volkswagen AG product data and vehicle configuration services across global markets. Catalog endpoints (GET) browse countries, brands, models, types, and options. Operation endpoints (POST) handle buildability checking, configuration recovery, interactive configuration, resolution, WLTP emissions data, vehicle images, and order information with pricing.

OpenAPI Specification

volkswagen-okapi-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Volkswagen OKAPI - Open Konfigurator API
  description: >-
    The Volkswagen OKAPI (Open Konfigurator API) provides access to Volkswagen AG
    product data, enabling developers to browse vehicle catalogs, configure cars
    iteratively, validate buildability, retrieve WLTP emissions data, get configuration
    images, and obtain pricing and technical order information. Supports all VW Group
    brands across global markets.
  version: 'v3'
  contact:
    name: Volkswagen OKAPI Developer Portal
    url: https://okapi-ddp.productdata.volkswagenag.com/dev-portal/
  license:
    name: Volkswagen OKAPI Terms and Conditions
    url: https://productdata.volkswagenag.com/condition-of-use.html
servers:
  - url: https://productdata.volkswagenag.com/v3
    description: Volkswagen OKAPI API v3
security:
  - BearerAuth: []
paths:
  /countries:
    get:
      operationId: listCountries
      summary: List Available Countries
      description: >-
        Returns all countries for which OKAPI offers vehicle configuration support.
        Each country has an ISO 3166-2 market identifier used in subsequent catalog calls.
      tags:
        - Catalog
      responses:
        '200':
          description: List of supported countries with their market identifiers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountryList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /catalog/{countryCode}/brands:
    get:
      operationId: listBrandsByCountry
      summary: List Brands By Country
      description: >-
        Returns all VW Group brands available in the specified country market.
      tags:
        - Catalog
      parameters:
        - $ref: '#/components/parameters/countryCode'
      responses:
        '200':
          description: List of brands available in the country.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /catalog/{countryCode}/brands/{brandId}/models:
    get:
      operationId: listModelsByBrand
      summary: List Models By Brand
      description: >-
        Returns all vehicle models available for a specific brand in a country.
      tags:
        - Catalog
      parameters:
        - $ref: '#/components/parameters/countryCode'
        - $ref: '#/components/parameters/brandId'
      responses:
        '200':
          description: List of models for the brand in the country.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /catalog/{countryCode}/models/{modelId}/types:
    get:
      operationId: listTypesByModel
      summary: List Types By Model
      description: >-
        Returns all vehicle types (trim levels, engine variants) for a specific model.
      tags:
        - Catalog
      parameters:
        - $ref: '#/components/parameters/countryCode'
        - $ref: '#/components/parameters/modelId'
      responses:
        '200':
          description: List of vehicle types for the model.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TypeList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /catalog/{countryCode}/types/{typeId}/options:
    get:
      operationId: listOptionsByType
      summary: List Options By Type
      description: >-
        Returns all configurable options for a vehicle type, including exterior colors,
        interior colors, wheels, radio, packages, and service guarantees.
      tags:
        - Catalog
      parameters:
        - $ref: '#/components/parameters/countryCode'
        - $ref: '#/components/parameters/typeId'
      responses:
        '200':
          description: Available options for the vehicle type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OptionList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /operation/{countryCode}/check:
    post:
      operationId: checkBuildability
      summary: Check Configuration Buildability
      description: >-
        Validates whether a given set of selected options forms a buildable vehicle
        configuration. Returns conflict information if options are incompatible.
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/countryCode'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigurationRequest'
      responses:
        '200':
          description: Buildability check result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuildabilityResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '406':
          $ref: '#/components/responses/NotAcceptable'
  /operation/{countryCode}/recover:
    post:
      operationId: recoverConfiguration
      summary: Recover Buildable Configuration
      description: >-
        Given an unbuildable configuration, returns the nearest valid buildable
        configuration by resolving conflicts between selected options.
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/countryCode'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigurationRequest'
      responses:
        '200':
          description: Recovered buildable configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigurationResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /operation/{countryCode}/configure:
    post:
      operationId: getConfigurationOptions
      summary: Get Configuration Options
      description: >-
        Returns available options and choices for the current vehicle configuration,
        showing which options are selectable, unavailable, or required given current selections.
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/countryCode'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigurationRequest'
      responses:
        '200':
          description: Available configuration choices.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigurationOptions'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /operation/{countryCode}/resolve:
    post:
      operationId: resolveConfiguration
      summary: Resolve Configuration
      description: >-
        Completes a partial configuration by resolving ambiguities and returning
        the fully distinct configuration with all options specified.
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/countryCode'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigurationRequest'
      responses:
        '200':
          description: Fully resolved configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigurationResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /operation/{countryCode}/wltp:
    post:
      operationId: getWltpData
      summary: Get WLTP Emissions Data
      description: >-
        Retrieves WLTP (Worldwide Harmonised Light Vehicles Test Procedure) fuel
        consumption and CO2 emissions data for a vehicle configuration.
      tags:
        - Information
      parameters:
        - $ref: '#/components/parameters/countryCode'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigurationRequest'
      responses:
        '200':
          description: WLTP emissions and fuel consumption data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WltpData'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /operation/{countryCode}/images:
    post:
      operationId: getConfigurationImages
      summary: Get Configuration Images
      description: >-
        Returns URLs for vehicle images that correspond to the specified configuration,
        showing the vehicle with the selected exterior color, wheels, and other visual options.
      tags:
        - Information
      parameters:
        - $ref: '#/components/parameters/countryCode'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigurationRequest'
      responses:
        '200':
          description: Image URLs for the configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageData'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /operation/{countryCode}/order:
    post:
      operationId: getOrderInformation
      summary: Get Order Information
      description: >-
        Returns comprehensive order information for a configuration: current options,
        price, standard equipment list, and full technical specifications.
      tags:
        - Information
      parameters:
        - $ref: '#/components/parameters/countryCode'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigurationRequest'
      responses:
        '200':
          description: Order details including price and technical information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderData'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token obtained by requesting client credentials from the
        Volkswagen OKAPI Developer Portal.
  parameters:
    countryCode:
      name: countryCode
      in: path
      required: true
      description: ISO 3166-2 market identifier (e.g. DE, AT, GB, US).
      schema:
        type: string
        example: DE
    brandId:
      name: brandId
      in: path
      required: true
      description: Brand UUID identifier.
      schema:
        type: string
    modelId:
      name: modelId
      in: path
      required: true
      description: Model UUID identifier.
      schema:
        type: string
    typeId:
      name: typeId
      in: path
      required: true
      description: Vehicle type UUID identifier.
      schema:
        type: string
  schemas:
    CountryList:
      type: object
      properties:
        countries:
          type: array
          items:
            $ref: '#/components/schemas/Country'
    Country:
      type: object
      properties:
        code:
          type: string
          description: ISO 3166-2 country/market code.
          example: DE
        name:
          type: string
          description: Country display name.
    BrandList:
      type: object
      properties:
        brands:
          type: array
          items:
            $ref: '#/components/schemas/Brand'
    Brand:
      type: object
      properties:
        id:
          type: string
          description: Brand UUID.
        name:
          type: string
          description: Brand name (e.g. Volkswagen, Audi, SEAT, Skoda, CUPRA).
    ModelList:
      type: object
      properties:
        models:
          type: array
          items:
            $ref: '#/components/schemas/Model'
    Model:
      type: object
      properties:
        id:
          type: string
          description: Model UUID.
        name:
          type: string
          description: Model name (e.g. Golf, Passat, Tiguan).
        year:
          type: integer
          description: Model year.
    TypeList:
      type: object
      properties:
        types:
          type: array
          items:
            $ref: '#/components/schemas/VehicleType'
    VehicleType:
      type: object
      properties:
        id:
          type: string
          description: Vehicle type UUID.
        name:
          type: string
          description: Type name including engine and trim designation.
        basePrice:
          $ref: '#/components/schemas/Price'
    OptionList:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/Option'
    Option:
      type: object
      properties:
        id:
          type: string
          description: Option UUID.
        name:
          type: string
          description: Option display name.
        category:
          type: string
          enum:
            - exterior-color
            - interior
            - wheels
            - radio
            - packages
            - service
          description: Option category.
        price:
          $ref: '#/components/schemas/Price'
    ConfigurationRequest:
      type: object
      properties:
        typeId:
          type: string
          description: Vehicle type UUID.
        selectedOptions:
          type: array
          items:
            type: string
          description: UUIDs of currently selected configuration options.
        configId:
          type: string
          description: Optional configuration session ID for continuing a saved configuration.
    BuildabilityResult:
      type: object
      properties:
        buildable:
          type: boolean
          description: Whether the configuration is buildable.
        conflicts:
          type: array
          items:
            type: object
            properties:
              optionId:
                type: string
              reason:
                type: string
    ConfigurationResult:
      type: object
      properties:
        configId:
          type: string
          description: Session ID for continuing this configuration.
        typeId:
          type: string
        selectedOptions:
          type: array
          items:
            type: string
        buildable:
          type: boolean
    ConfigurationOptions:
      type: object
      properties:
        available:
          type: array
          items:
            type: string
          description: Option UUIDs currently selectable.
        unavailable:
          type: array
          items:
            type: string
          description: Option UUIDs not selectable with current selections.
        required:
          type: array
          items:
            type: string
          description: Option UUIDs required given current selections.
    WltpData:
      type: object
      properties:
        fuelConsumption:
          type: object
          properties:
            combined:
              type: number
              description: Combined fuel consumption in l/100km.
            urban:
              type: number
            extraUrban:
              type: number
        co2Emissions:
          type: object
          properties:
            combined:
              type: number
              description: Combined CO2 emissions in g/km.
        energyEfficiencyClass:
          type: string
          description: EU energy efficiency label (A-G).
    ImageData:
      type: object
      properties:
        images:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
                description: URL of the vehicle image.
              view:
                type: string
                enum:
                  - exterior-front
                  - exterior-rear
                  - exterior-side
                  - interior
                description: Camera viewpoint.
              width:
                type: integer
              height:
                type: integer
    OrderData:
      type: object
      properties:
        configId:
          type: string
        typeId:
          type: string
        selectedOptions:
          type: array
          items:
            type: string
        totalPrice:
          $ref: '#/components/schemas/Price'
        standardEquipment:
          type: array
          items:
            type: string
          description: Names of standard equipment included.
        technicalData:
          type: object
          description: Full technical specification data.
    Price:
      type: object
      properties:
        amount:
          type: number
          description: Price amount.
        currency:
          type: string
          description: ISO 4217 currency code.
          example: EUR
  responses:
    Unauthorized:
      description: Missing or invalid bearer token.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
    NotAcceptable:
      description: Configuration has unresolvable conflicts (HTTP 406).
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
    TooManyRequests:
      description: Request rate limit exceeded.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
tags:
  - name: Catalog
    description: Browse vehicle catalog — countries, brands, models, types, and options.
  - name: Configuration
    description: Configure vehicles — check buildability, recover, and resolve configurations.
  - name: Information
    description: Retrieve vehicle information — WLTP emissions, images, and order data.