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

# Get base variants by base product ID

> Returns a paginated list of base variants for a base product.
Page-number pagination (`page[number]`, `page[size]`).




## OpenAPI

````yaml get /v3/base-products/{baseProductId}/variants
openapi: 3.0.3
info:
  title: Snappy Public API v3
  version: 3.0.0
  contact:
    name: Snappy Support
    email: info@snappy.com
  description: >-
    Welcome to the Snappy API reference documentation!

    You can use this API to integrate with Snappy and spread smiles to your
    employees/clients/customers and much more.

    So let's get started!
servers:
  - url: https://api.snappy.com/public-api
    description: Base API URL
  - url: https://mtls-api.snappy.com/public-api
    description: >-
      ## mTLS URL

      You can also use mTLS to enhance your API security. To get your specific
      certificates please contact our support.

      Once you configure the certificated correctly, you need to also update
      endpoints to use the following secure api base URL:
security:
  - apiKeyAuth: []
tags:
  - name: Base Products
    description: Browse and retrieve base products and base variants (swag).
paths:
  /v3/base-products/{baseProductId}/variants:
    get:
      tags:
        - Base Products
      summary: Get base variants by base product id
      description: |
        Returns a paginated list of base variants for a base product.
        Page-number pagination (`page[number]`, `page[size]`).
      operationId: getBaseVariantsByBaseProductId
      parameters:
        - $ref: '#/components/parameters/BaseProductIdPath'
        - $ref: '#/components/parameters/BaseFields'
        - $ref: '#/components/parameters/PageNumber'
        - $ref: '#/components/parameters/BaseVariantPageSize'
      responses:
        '200':
          description: Paginated list of base variants.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseVariantListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/BaseProductNotFound'
components:
  parameters:
    BaseProductIdPath:
      name: baseProductId
      in: path
      required: true
      schema:
        type: string
      description: Base product identifier.
    BaseFields:
      name: fields
      in: query
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
      description: |
        Optional base-product/base-variant field expansions. Comma-separated.
    PageNumber:
      name: page[number]
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        default: 1
      description: 1-indexed page number for page-number paginated endpoints.
    BaseVariantPageSize:
      name: page[size]
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 500
        default: 100
      description: Number of base variants per page (max 500, default 100).
  schemas:
    BaseVariantListResponse:
      type: object
      description: Paginated base variant list response.
      required:
        - data
        - links
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BaseVariant'
        links:
          $ref: '#/components/schemas/PaginationLinks'
    BaseVariant:
      type: object
      description: Base variant of a base product. Minimal shape.
      required:
        - id
        - title
        - selectedOptions
        - media
      properties:
        id:
          type: string
          example: bv_x9y8z7
        baseProductId:
          type: string
          description: Parent base product identifier.
        title:
          type: string
        selectedOptions:
          type: object
          additionalProperties:
            type: string
        media:
          type: array
          items:
            $ref: '#/components/schemas/Media'
    PaginationLinks:
      type: object
      description: |
        Top-level JSON:API-style pagination links for paginated list
        responses. `first` is always present. `next` is `null` on the final
        page. `prev` is `null` on the first page (and on cursor-paginated
        endpoints where backward navigation is not supported).
      required:
        - first
        - next
        - prev
      properties:
        first:
          type: string
          nullable: true
          description: Link to the first page.
          example: /v3/collections/abc/products?page[size]=100
        next:
          type: string
          nullable: true
          description: Link to the next page, or `null` if no further pages.
          example: >-
            /v3/collections/abc/products?page[cursor]=cursor_abc123&page[size]=100
        prev:
          type: string
          nullable: true
          description: Link to the previous page, or `null` when not applicable.
    ErrorResponse:
      type: object
      description: |
        Standard error envelope. `errorCode` follows the
        `{status}_{DOMAIN}_{sequence}` format. `errors[]` lists field-level
        details with dot-separated paths (e.g. `query.filter[price][gte]`,
        `path.collectionId`).
      required:
        - status
        - errorCode
        - message
        - errors
      properties:
        status:
          type: integer
          example: 404
        errorCode:
          type: string
          example: 404_PROD_001
        message:
          type: string
          example: Product Not Found
        errors:
          type: array
          items:
            type: object
            required:
              - errorCode
              - message
              - path
            properties:
              errorCode:
                type: string
                example: 404_PROD_001
              message:
                type: string
                example: Product with id 'q1w2e3r4t5' was not found
              path:
                type: string
                description: Dot-separated path to the field that caused the error.
                example: path.productId
    Media:
      type: object
      description: |
        A media item. For images, `src` is on the media CDN
        (`https://media.snappy.com`) and accepts `w`, `h`, `q`, `f` query
        parameters. For videos, `src` is returned as-is.

        First-version limitation: only square images (`w === h`) are
        supported. Default resolution is 1000×1000.
      required:
        - type
        - src
      properties:
        type:
          type: string
          enum:
            - image
            - video
          example: image
        src:
          type: string
          format: uri
          example: https://media.snappy.com/image/asset123?w=1000&h=1000&q=80&f=auto
  responses:
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BaseProductNotFound:
      description: Base Product Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: Partner API key. Finalized per partner integration agreement.

````