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

# Get Product by Slug



## OpenAPI

````yaml openapi/storefront.json GET /v1/products/{slug}
openapi: 3.1.0
info:
  title: Fourthwall APIs
  description: Service used for management of orders, carts, and payments.
  termsOfService: https://fourthwall.com/terms-of-service
  contact:
    name: Backend team
    url: https://fourthwall.com
    email: backend@fourthwall.com
  version: unspecified
servers:
  - url: https://storefront-api.fourthwall.com
    description: Production server
security: []
externalDocs:
  description: OpenAPI documentation
  url: https://docs.fourthwall.com
paths:
  /v1/products/{slug}:
    get:
      tags:
        - headless_products
      summary: Get a product by slug
      operationId: get-product
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: slug
          in: path
          required: true
          schema:
            type: string
        - name: currency
          in: query
          required: false
          schema:
            type: string
            enum:
              - USD
              - EUR
              - CAD
              - GBP
              - AUD
              - NZD
              - SEK
              - NOK
              - DKK
              - PLN
              - INR
              - JPY
              - MYR
              - SGD
              - MXN
              - BRL
              - CHF
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: >-
                      #/components/schemas/com.fourthwall.app.headless.model.BundleV1
                  - $ref: >-
                      #/components/schemas/com.fourthwall.app.headless.model.ProductV1
        '404':
          description: >-
            Possible errors: `OFFER_SLUG_NOT_FOUND_ERROR`,
            `OFFER_VARIANT_NOT_FOUND_ERROR`
          content:
            application/json:
              examples:
                offer-slug-not-found-error:
                  value:
                    code: OFFER_SLUG_NOT_FOUND_ERROR
                    shopId: <shopid>
                    offerSlug: <slug>
                offer-variant-not-found-error:
                  value:
                    code: OFFER_VARIANT_NOT_FOUND_ERROR
                    offerVariantId: <offervariantid>
      externalDocs:
        url: >-
          https://docs.fourthwall.com/api-reference/storefront/products/get-product
components:
  schemas:
    com.fourthwall.app.headless.model.BundleV1:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.headless.model.ProductAbstractV1
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
            slug:
              type: string
            description:
              type: string
            state:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.Available
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.SoldOut
            access:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Archived
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Hidden
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Private
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public
            images:
              type: array
              items:
                $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
            price:
              $ref: '#/components/schemas/Money'
              description: >-
                Price of the whole bundle for the cheapest selection of
                variants.
            compareAtPrice:
              $ref: '#/components/schemas/Money'
              description: >-
                Sum of the individual product prices, shown as a strikethrough
                price. Null when the creator disabled it or the bundle is not
                discounted.
            pricingStrategy:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.headless.model.BundlePricingStrategyV1.DiscountBased
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.headless.model.BundlePricingStrategyV1.FixedPrice
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.headless.model.BundlePricingStrategyV1.SameAsIndividual
            offers:
              type: array
              description: >-
                Offers (products) the bundle consists of, in bundle order. One
                variant of each must be selected to buy the bundle.
              items:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.headless.model.ProductV1
            additionalInformation:
              type: array
              items:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.headless.model.ProductAdditionalInformationV1
            createdAt:
              type: string
              format: date-time
              example: '2020-08-13T09:05:36.939Z'
            updatedAt:
              type: string
              format: date-time
              example: '2020-08-13T09:05:36.939Z'
            type:
              type: string
              description: Discriminator, always `BUNDLE` for a bundle.
              enum:
                - BUNDLE
              const: BUNDLE
      required:
        - access
        - createdAt
        - description
        - id
        - images
        - name
        - offers
        - price
        - pricingStrategy
        - slug
        - state
        - type
        - updatedAt
      title: Bundle
    com.fourthwall.app.headless.model.ProductV1:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.headless.model.ProductAbstractV1
        - type: object
          properties:
            id:
              type: string
            name:
              type: string
            slug:
              type: string
            description:
              type: string
            state:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.Available
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.SoldOut
            access:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Archived
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Hidden
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Private
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public
            images:
              type: array
              items:
                $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
            variants:
              type: array
              items:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.headless.model.ProductVariantV1
            additionalInformation:
              type: array
              items:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.headless.model.ProductAdditionalInformationV1
            sizeGuide:
              $ref: >-
                #/components/schemas/com.fourthwall.app.headless.model.ProductSizeGuideV1
            createdAt:
              type: string
              format: date-time
              example: '2020-08-13T09:05:36.939Z'
            updatedAt:
              type: string
              format: date-time
              example: '2020-08-13T09:05:36.939Z'
            type:
              type: string
              description: Discriminator, always `PRODUCT` for a regular product.
              enum:
                - PRODUCT
              const: PRODUCT
      required:
        - access
        - createdAt
        - description
        - id
        - images
        - name
        - slug
        - state
        - type
        - updatedAt
        - variants
      title: Product
    com.fourthwall.app.headless.model.ProductAbstractV1:
      type: object
      discriminator:
        propertyName: type
        mapping:
          PRODUCT:
            $ref: '#/components/schemas/com.fourthwall.app.headless.model.ProductV1'
          BUNDLE:
            $ref: '#/components/schemas/com.fourthwall.app.headless.model.BundleV1'
      properties:
        type:
          type: string
      required:
        - type
      title: Product Abstract
    com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.Available:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1
        - type: object
          properties:
            type:
              type: string
              const: AVAILABLE
      title: Available
    com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.SoldOut:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1
        - type: object
          properties:
            type:
              type: string
              const: SOLD_OUT
      title: Sold Out
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Archived:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
        - type: object
          properties:
            type:
              type: string
              const: ARCHIVED
      title: Archived
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Hidden:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
        - type: object
          properties:
            type:
              type: string
              const: HIDDEN
      title: Hidden
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Private:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
        - type: object
          properties:
            type:
              type: string
              const: PRIVATE
      title: Private
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
        - type: object
          properties:
            type:
              type: string
              const: PUBLIC
      title: Public
    com.fourthwall.openapi.model.Image:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        url:
          type: string
          example: https://fourthwall.com/image.png
        width:
          type: integer
          format: int32
          description: The original width of the image in pixels.
          example: 800
        height:
          type: integer
          format: int32
          description: The original height of the image in pixels.
          example: 600
        transformedUrl:
          type: string
          description: >-
            Transformed URL with applied image processing (e.g., resizing,
            optimization)
          example: https://fourthwall.com/image.png
      required:
        - height
        - id
        - transformedUrl
        - url
        - width
      title: Image
    Money:
      type: object
      properties:
        value:
          type: number
          example: 10
          minimum: 0
        currency:
          type: string
          example: USD
      required:
        - currency
        - value
      title: Money
    com.fourthwall.app.headless.model.BundlePricingStrategyV1.DiscountBased:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.headless.model.BundlePricingStrategyV1
        - type: object
          properties:
            discountPercentage:
              type: number
              example: 30
        - type: object
          properties:
            type:
              type: string
              const: DISCOUNT_BASED
      description: The sum of the product prices reduced by `discountPercentage`.
      required:
        - discountPercentage
      title: Discount Based
    com.fourthwall.app.headless.model.BundlePricingStrategyV1.FixedPrice:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.headless.model.BundlePricingStrategyV1
        - type: object
          properties:
            price:
              $ref: '#/components/schemas/Money'
        - type: object
          properties:
            type:
              type: string
              const: FIXED_PRICE
      description: The bundle has a fixed price regardless of the selected variants.
      required:
        - price
      title: Fixed Price
    com.fourthwall.app.headless.model.BundlePricingStrategyV1.SameAsIndividual:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.headless.model.BundlePricingStrategyV1
        - type: object
          properties:
            type:
              type: string
              const: SAME_AS_INDIVIDUAL
      description: The bundle costs the sum of its products.
      title: Same As Individual
    com.fourthwall.app.headless.model.ProductAdditionalInformationV1:
      type: object
      properties:
        type:
          type: string
          enum:
            - MORE_DETAILS
            - SIZE_AND_FIT
            - GUARANTEE_AND_RETURNS
        title:
          type: string
        bodyHtml:
          type: string
      required:
        - bodyHtml
        - title
        - type
      title: Product Additional Information
    com.fourthwall.app.headless.model.ProductVariantV1:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        sku:
          type: string
        unitPrice:
          $ref: '#/components/schemas/Money'
        compareAtPrice:
          $ref: '#/components/schemas/Money'
        attributes:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes
        stock:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Limited
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Unlimited
        weight:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Weight
        dimensions:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Dimensions
        images:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
      required:
        - attributes
        - dimensions
        - id
        - images
        - name
        - sku
        - stock
        - unitPrice
        - weight
      title: Product Variant
    com.fourthwall.app.headless.model.ProductSizeGuideV1:
      type: object
      properties:
        previewUrl:
          type: string
        fileUrl:
          type: string
        description:
          type: string
        fitGuideDescription:
          type: string
        fitGuideUrls:
          type: array
          items:
            type: string
      required:
        - fitGuideUrls
      title: Product Size Guide
    com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1:
      discriminator:
        propertyName: type
        mapping:
          AVAILABLE:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.Available
          SOLD_OUT:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.SoldOut
      properties:
        type:
          type: string
      required:
        - type
      title: Offer State
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1:
      discriminator:
        propertyName: type
        mapping:
          PUBLIC:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public
          HIDDEN:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Hidden
          PRIVATE:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Private
          ARCHIVED:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Archived
      properties:
        type:
          type: string
      required:
        - type
      title: Offer Access
    com.fourthwall.app.headless.model.BundlePricingStrategyV1:
      discriminator:
        propertyName: type
        mapping:
          SAME_AS_INDIVIDUAL:
            $ref: >-
              #/components/schemas/com.fourthwall.app.headless.model.BundlePricingStrategyV1.SameAsIndividual
          DISCOUNT_BASED:
            $ref: >-
              #/components/schemas/com.fourthwall.app.headless.model.BundlePricingStrategyV1.DiscountBased
          FIXED_PRICE:
            $ref: >-
              #/components/schemas/com.fourthwall.app.headless.model.BundlePricingStrategyV1.FixedPrice
      properties:
        type:
          type: string
      required:
        - type
      title: Bundle Pricing Strategy
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes:
      type: object
      properties:
        description:
          type: string
          example: Black, L
        color:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Color
        size:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Size
      required:
        - description
      title: Attributes
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Limited:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock
        - type: object
          properties:
            inStock:
              type: integer
              format: int32
              example: 5
        - type: object
          properties:
            type:
              type: string
              const: LIMITED
      required:
        - inStock
      title: Limited
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Unlimited:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock
        - type: object
          properties:
            type:
              type: string
              const: UNLIMITED
      title: Unlimited
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Weight:
      type: object
      properties:
        value:
          type: number
          example: 1
        unit:
          type: string
          example: kg
      required:
        - unit
        - value
      title: Weight
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Dimensions:
      type: object
      properties:
        length:
          type: number
          example: 1
        width:
          type: number
          example: 2
        height:
          type: number
          example: 3
        unit:
          type: string
          example: cm
      required:
        - height
        - length
        - unit
        - width
      title: Dimensions
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Color:
      type: object
      properties:
        name:
          type: string
          example: Black
        swatch:
          type: string
          example: '#000000'
      required:
        - name
        - swatch
      title: Color
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Size:
      type: object
      properties:
        name:
          type: string
          example: L
      required:
        - name
      title: Size
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock:
      discriminator:
        propertyName: type
        mapping:
          UNLIMITED:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Unlimited
          LIMITED:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Limited
      properties:
        type:
          type: string
      required:
        - type
      title: Stock

````