Volkswagen Catalog API

Browse vehicle catalog — countries, brands, models, types, and options.

OpenAPI Specification

volkswagen-catalog-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Volkswagen OKAPI - Open Konfigurator Catalog 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: []
tags:
- name: Catalog
  description: Browse vehicle catalog — countries, brands, models, types, and options.
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'
components:
  schemas:
    Country:
      type: object
      properties:
        code:
          type: string
          description: ISO 3166-2 country/market code.
          example: DE
        name:
          type: string
          description: Country display name.
    Price:
      type: object
      properties:
        amount:
          type: number
          description: Price amount.
        currency:
          type: string
          description: ISO 4217 currency code.
          example: EUR
    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'
    ModelList:
      type: object
      properties:
        models:
          type: array
          items:
            $ref: '#/components/schemas/Model'
    BrandList:
      type: object
      properties:
        brands:
          type: array
          items:
            $ref: '#/components/schemas/Brand'
    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'
    Brand:
      type: object
      properties:
        id:
          type: string
          description: Brand UUID.
        name:
          type: string
          description: Brand name (e.g. Volkswagen, Audi, SEAT, Skoda, CUPRA).
    OptionList:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/Option'
    CountryList:
      type: object
      properties:
        countries:
          type: array
          items:
            $ref: '#/components/schemas/Country'
    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'
  parameters:
    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
    brandId:
      name: brandId
      in: path
      required: true
      description: Brand UUID identifier.
      schema:
        type: string
    countryCode:
      name: countryCode
      in: path
      required: true
      description: ISO 3166-2 market identifier (e.g. DE, AT, GB, US).
      schema:
        type: string
        example: DE
  responses:
    Unauthorized:
      description: Missing or invalid bearer token.
      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
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Bearer token obtained by requesting client credentials from the Volkswagen OKAPI Developer Portal.