> ## 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 product by ID

> Returns a single base product by id. `fields` accepts an optional
free-form list of base-product field expansions.




## OpenAPI

````yaml get /v3/base-products/{baseProductId}
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}:
    get:
      tags:
        - Base Products
      summary: Get base product by id
      description: |
        Returns a single base product by id. `fields` accepts an optional
        free-form list of base-product field expansions.
      operationId: getBaseProductById
      parameters:
        - $ref: '#/components/parameters/BaseProductIdPath'
        - $ref: '#/components/parameters/BaseFields'
      responses:
        '200':
          description: Single base product.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseProduct'
        '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.
  schemas:
    BaseProduct:
      type: object
      description: |
        Base product (swag template). Minimal shape - extended schema to be
        finalized as the swag track lands.
      required:
        - id
        - title
        - media
        - category
        - type
      properties:
        id:
          type: string
          example: bp_a1b2c3
        title:
          type: string
        media:
          type: array
          items:
            $ref: '#/components/schemas/Media'
        category:
          $ref: '#/components/schemas/Category'
        type:
          $ref: '#/components/schemas/ProductType'
        brand:
          allOf:
            - $ref: '#/components/schemas/Brand'
          nullable: true
    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
    Category:
      type: object
      required:
        - fullName
      properties:
        fullName:
          type: string
          description: Full taxonomy path separated by " / ".
          example: gifts / electronics / iphones
    ProductType:
      type: string
      description: |
        Product type. Used both as the value of `Product.type` and as the
        filter value for `filter[type]`.
      enum:
        - physical
        - digital
        - giftCard
        - donation
      example: physical
    Brand:
      type: object
      description: >-
        Product brand. May be `null` (per the parent property) when no brand
        applies.
      required:
        - id
        - name
        - description
      properties:
        id:
          type: string
          example: 621f9d4b1e675adcbc196159
        name:
          type: string
          example: Apple
        description:
          type: string
          nullable: true
          example: Cute pet brand
    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
  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.

````