> ## Documentation Index
> Fetch the complete documentation index at: https://developer.kalixo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List catalog products

> Returns the products in your catalog. Supports filtering and pagination. Filters are AND-combined across fields; within a single field you may pass multiple comma-separated values (for example `country=GB,IE`).



## OpenAPI

````yaml /openapi.json get /catalog/products
openapi: 3.1.0
info:
  title: Kalixo Distribution API
  version: 2.1.3
  description: >-
    The Kalixo Distribution API lets partners browse their product catalog,
    place and track digital gift-card orders (single or bulk), and monitor their
    wallet balance. All v2 ordering is asynchronous: place an order, then poll
    it until the codes are delivered.
  contact:
    name: Kalixo Integrations
    email: integrations@kalixo.io
servers:
  - url: https://api.kalixo.io/v2
    description: Production (pre-release placeholder)
  - url: https://sandbox.kalixo.io/v2
    description: Sandbox
security:
  - apiKey: []
tags:
  - name: Ping
    description: >-
      Verify API connectivity once your API key is issued and your IP is
      whitelisted.
  - name: Catalog
    description: >-
      Browse the products available in your catalog, including pricing, your
      discount amount and percentage, and open-denomination ranges.
  - name: Orders
    description: >-
      Place orders and poll them until codes are delivered. Single and bulk
      orders share the same asynchronous lifecycle.
  - name: Wallet
    description: Check your current wallet balances per currency.
paths:
  /catalog/products:
    get:
      tags:
        - Catalog
      summary: List catalog products
      description: >-
        Returns the products in your catalog. Supports filtering and pagination.
        Filters are AND-combined across fields; within a single field you may
        pass multiple comma-separated values (for example `country=GB,IE`).
      operationId: listCatalogProducts
      parameters:
        - name: country
          in: query
          description: Filter by ISO country code(s). Comma-separated for multiple.
          required: false
          schema:
            type: string
            example: GB,IE
        - name: language
          in: query
          description: Filter by language code(s). Comma-separated for multiple.
          required: false
          schema:
            type: string
            example: en
        - name: brand
          in: query
          description: Filter by brand name(s). Comma-separated for multiple.
          required: false
          schema:
            type: string
            example: PlayStation
        - name: category
          in: query
          description: Filter by category/main category. Comma-separated for multiple.
          required: false
          schema:
            type: string
            example: Gaming
        - name: tag
          in: query
          description: Filter by tag(s). Comma-separated for multiple.
          required: false
          schema:
            type: string
            example: bestseller
        - name: search
          in: query
          description: Free-text search across product name and productCode.
          required: false
          schema:
            type: string
        - name: skip
          in: query
          description: Number of records to skip (offset).
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: take
          in: query
          description: Number of records to return. Maximum 100.
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
      responses:
        '200':
          description: A paginated list of catalog products.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogProductList'
              examples:
                playstationTopUp:
                  $ref: '#/components/examples/CatalogProductListExample'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    CatalogProductList:
      type: object
      properties:
        count:
          type: integer
          description: Total products matching the filters.
          example: 1320
        skip:
          type: integer
          example: 0
        take:
          type: integer
          example: 20
        products:
          type: array
          items:
            $ref: '#/components/schemas/Product'
    Product:
      type: object
      properties:
        productCode:
          type: string
          description: >-
            The product code you order with - a stable 14-digit catalog
            identifier, identical across sandbox and production.
          example: '10020000213575'
        name:
          type: string
          example: Sony PlayStation®Network Wallet Top-Up £100
        shortName:
          type: string
          description: Short display name or abbreviation for the product.
          example: PSN
        image:
          type: string
          format: uri
          example: https://cdn.kalixo.io/static-images/GB-EN-10020000213575.png
        price:
          type: integer
          description: Selling price in minor units (e.g. pennies).
          example: 10000
        currencyCode:
          type: string
          example: GBP
        buyingPrice:
          type: number
          description: Your buying price in minor units.
          example: 9500
        buyingCurrencyCode:
          type: string
          example: GBP
        discountAmount:
          type: number
          description: >-
            Your discount amount in minor units (sell price minus your buying
            price, or the monetary equivalent of your commission rate).
          example: 500
        discountPercentage:
          type: number
          description: Your commission rate as a percentage of the sell price.
          example: 5
        currencyMismatch:
          type: boolean
          description: >-
            True when your buying currency differs from the product's selling
            currency.
          example: false
        denominationType:
          $ref: '#/components/schemas/DenominationType'
        denominationMinValue:
          type: number
          nullable: true
          example: null
        denominationMaxValue:
          type: number
          nullable: true
          example: null
        denominationStep:
          type: number
          nullable: true
          example: null
        denominationDefaultValue:
          type: number
          nullable: true
          example: null
        brand:
          type: string
          example: PlayStation
        publisher:
          type: string
          example: Sony
        countryCode:
          type: string
          example: GB
        mainCategory:
          type: string
          example: Gaming
        subCategory:
          type: string
          example: PlayStation
        productCategory:
          type: string
          example: PlayStation
        productType:
          type: string
          example: credit
        platform:
          type: string
          example: PlayStation
        redeemable:
          type: string
          description: >-
            Country or market where the product can be redeemed (derived from
            `countryCode`).
          example: United Kingdom
        preorder:
          type: boolean
          example: true
        preorderCode:
          type: boolean
          example: true
        firstSale:
          type: string
          format: date
          example: '2026-06-01'
        playableOn:
          type: string
          format: date
          example: '2026-06-15'
        expires:
          type: boolean
          example: true
        expiryPolicy:
          type: string
          example: 3 years
        tags:
          type: array
          items:
            type: string
          example:
            - bestseller
            - gaming
        status:
          type: string
          description: >-
            Product availability in the catalog (e.g. active, inactive,
            preorder).
          example: active
        promotion:
          type: boolean
          description: True when a promotion applies to this product.
          example: true
        promotionType:
          type: string
          enum:
            - Discount
            - Value Off
            - Added Value
          description: Kind of promotional offer.
          example: Discount
        promotionDetails:
          type: string
          description: >-
            Offer detail (e.g. percentage, amount off, or bonus item
            description).
          example: '5'
        promotionStartDate:
          type: string
          format: date
          description: First day the promotion applies.
          example: '2026-07-20'
        promotionEndDate:
          type: string
          format: date
          description: Last day the promotion applies.
          example: '2026-07-30'
        serviceFee:
          type: boolean
          description: True when a service fee applies to this product.
          example: true
        serviceFeeType:
          type: string
          enum:
            - Percentage
            - Amount
          description: How the service fee is calculated.
          example: Amount
        serviceFeeValue:
          type: string
          description: >-
            Fee rate or amount. For `Percentage`, the percentage of sell price
            (e.g. `"2.5"` for 2.5%). For `Amount`, the fixed fee in minor units
            (e.g. `"250"` for £2.50).
          example: '250'
        type:
          type: string
          example: digital
        languages:
          type: array
          items:
            $ref: '#/components/schemas/ProductLanguage'
    Error:
      type: object
      description: >-
        Standard error response. See the Errors concept page for the complete
        message catalogue.
      required:
        - statusCode
        - message
      properties:
        statusCode:
          type: integer
          example: 400
        error:
          type: string
          description: >-
            Short label for the status (for example `Bad Request`, `Not Found`).
            Omitted on some `500` responses.
          example: Bad Request
        message:
          type: string
          description: Human-readable explanation. May include the productCode you sent.
          example: 'Product 10020000213575 price mismatch: expected 10000'
    DenominationType:
      type: string
      enum:
        - fixed
        - open
      description: >-
        `fixed` products have a set price; `open` products accept any amount
        within a range.
    ProductLanguage:
      type: object
      properties:
        languageCode:
          type: string
          example: en
        name:
          type: string
          example: Sony PlayStation®Network Wallet Top-Up £100
        sku:
          type: string
          description: >-
            Locale SKU in the form `{CC}-{LL}-{productCode}` (e.g.
            GB-EN-10020000213575).
          example: GB-EN-10020000213575
        image:
          type: string
          format: uri
          example: https://cdn.kalixo.io/static-images/GB-EN-10020000213575.png
        description:
          type: string
        tnc:
          type: string
        redemptionInstructions:
          type: string
  examples:
    CatalogProductListExample:
      summary: Paginated list with one product
      value:
        count: 1
        skip: 0
        take: 20
        products:
          - productCode: '10020000213575'
            name: Sony PlayStation®Network Wallet Top-Up £100
            shortName: PSN
            image: https://cdn.kalixo.io/static-images/GB-EN-10020000213575.png
            price: 10000
            currencyCode: GBP
            buyingPrice: 9500
            buyingCurrencyCode: GBP
            discountAmount: 500
            discountPercentage: 5
            currencyMismatch: false
            denominationType: fixed
            brand: PlayStation
            publisher: Sony
            countryCode: GB
            mainCategory: Gaming
            subCategory: PlayStation
            productCategory: PlayStation
            productType: credit
            platform: PlayStation
            redeemable: United Kingdom
            preorder: true
            preorderCode: true
            firstSale: '2026-06-01'
            playableOn: '2026-06-15'
            expires: true
            expiryPolicy: 3 years
            tags:
              - bestseller
              - gaming
            status: active
            promotion: true
            promotionType: Discount
            promotionDetails: '5'
            promotionStartDate: '2026-07-20'
            promotionEndDate: '2026-07-30'
            serviceFee: true
            serviceFeeType: Amount
            serviceFeeValue: '250'
            type: digital
    ErrorMissingApiKey:
      summary: Missing API key
      value:
        statusCode: 401
        error: Unauthorized
        message: Missing API key
    ErrorInvalidApiKey:
      summary: Invalid API key
      value:
        statusCode: 401
        error: Unauthorized
        message: Invalid API key
    ErrorInternalServerError:
      summary: Unexpected server error
      value:
        statusCode: 500
        message: Internal server error
  responses:
    Unauthorized:
      description: Missing or invalid `x-api-key`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missingApiKey:
              $ref: '#/components/examples/ErrorMissingApiKey'
            invalidApiKey:
              $ref: '#/components/examples/ErrorInvalidApiKey'
    InternalServerError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            internalServerError:
              $ref: '#/components/examples/ErrorInternalServerError'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Your Kalixo API key. Send it in the `x-api-key` header on every request.
      x-default: kal_live_xxxxxxxxxxxxxxxxxxxxxxxx

````