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

# List all active products



## OpenAPI

````yaml GET /v1/products
openapi: 3.0.1
info:
  title: Goody API
  version: 1.0.0
  contact:
    name: Goody Support
    email: support@ongoody.com
servers:
  - url: https://api.ongoody.com
    description: Production
  - url: https://api.sandbox.ongoody.com
    description: Sandbox
security: []
paths:
  /v1/products:
    get:
      tags:
        - Products
      summary: List all active products
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            default: 1
            minimum: 1
          description: Page for pagination, starting at 1
          required: false
        - name: per_page
          in: query
          schema:
            type: integer
            default: 20
            minimum: 1
            maximum: 100
          description: Items per page for pagination
          required: false
        - name: use_custom_catalog
          in: query
          schema:
            type: boolean
          description: Limit to custom catalog only (for approved API partners)
          required: false
        - name: country_code
          in: query
          schema:
            type: string
            default: US
          description: Filter by a specific shipping country code
          required: false
        - name: custom_catalog_show_inactive
          in: query
          schema:
            type: boolean
          description: >-
            Show inactive products in the custom catalog. Only for Commerce API
            customers with a custom catalog.
          required: false
      responses:
        '200':
          description: Products retrieved
          content:
            application/json:
              examples:
                Products retrieved:
                  value:
                    data:
                      - id: 83bd1170-9352-427d-85aa-e2bcf3c323c8
                        name: Six Cookies
                        brand:
                          id: 2a294fe7-ecac-40c2-ae3f-1c931ae68720
                          name: Nerissa Littel
                          logo_image: null
                          shipping_price: 1000
                          free_shipping_minimum: null
                          brand_values:
                            - Sustainable
                        subtitle: null
                        subtitle_short: null
                        recipient_description: ''
                        variants_label: option
                        variants_num_selectable: 3
                        variants:
                          - id: 5dea5349-cf6c-4b67-8ace-309557f16f9f
                            name: Chocolate Chip
                            subtitle: Classic chocolate chip.
                            image_large: null
                          - id: 7324cbd9-0c83-4d79-90ec-c793ab0023af
                            name: Oatmeal
                            subtitle: Delicious oatmeal.
                            image_large: null
                          - id: 928b21ea-a7a3-4ad2-aa6c-f30b23f10faa
                            name: Sugar
                            subtitle: Tasty sugar.
                            image_large: null
                        variant_groups: []
                        images: []
                        price: 1000
                        price_is_variable: false
                        restricted_states: []
                        attributes:
                          - label: Where it's made
                            content: Made in Miami, FL
                        updated_at: '2026-06-03T12:25:19Z'
                        status: active
                      - id: 94d0582f-f37b-45e4-b4d6-188ddd41e499
                        name: Dozen Cookies
                        brand:
                          id: 2a294fe7-ecac-40c2-ae3f-1c931ae68720
                          name: Nerissa Littel
                          logo_image: null
                          shipping_price: 1000
                          free_shipping_minimum: null
                          brand_values:
                            - Sustainable
                        subtitle: null
                        subtitle_short: null
                        recipient_description: ''
                        variants_label: option
                        variants_num_selectable: 3
                        variants:
                          - id: d63f8e89-a7cb-4607-8f8b-1f347be4d1b6
                            name: Chocolate Chip
                            subtitle: Classic chocolate chip.
                            image_large: null
                          - id: b197404c-c331-4676-8580-290b2bebe353
                            name: Oatmeal
                            subtitle: Delicious oatmeal.
                            image_large: null
                          - id: 1e2c60a4-6513-48a6-a696-021e5c2d3093
                            name: Sugar
                            subtitle: Tasty sugar.
                            image_large: null
                        variant_groups: []
                        images: []
                        price: 1000
                        price_is_variable: false
                        restricted_states: []
                        attributes: []
                        updated_at: '2026-06-03T12:25:19Z'
                        status: active
                      - id: a169b309-6166-4382-b020-8d571c7f2b95
                        name: Cookie Box
                        brand:
                          id: 2a294fe7-ecac-40c2-ae3f-1c931ae68720
                          name: Nerissa Littel
                          logo_image: null
                          shipping_price: 1000
                          free_shipping_minimum: null
                          brand_values:
                            - Sustainable
                        subtitle: null
                        subtitle_short: null
                        recipient_description: ''
                        variants_label: option
                        variants_num_selectable: 1
                        variants:
                          - id: badeeb1c-8847-40d9-b7f9-d118723f51f1
                            name: Grey / Chocolate Chip
                            subtitle: null
                            image_large: null
                          - id: 01f20566-5645-4c32-9f79-222c5c1f1407
                            name: Grey / Oatmeal
                            subtitle: null
                            image_large: null
                          - id: b7fc2aad-b490-47af-b73f-7cc5aa55697a
                            name: Grey / Sugar
                            subtitle: null
                            image_large: null
                          - id: 72f5b1fb-5085-4218-8c60-a356d35b3be1
                            name: Purple / Chocolate Chip
                            subtitle: null
                            image_large: null
                          - id: 2ec977b6-4333-4e20-a8dc-dca2cc27fb6d
                            name: Purple / Oatmeal
                            subtitle: null
                            image_large: null
                          - id: 2a060efb-a11e-4858-a547-939ca630977c
                            name: Purple / Sugar
                            subtitle: null
                            image_large: null
                        variant_groups:
                          - id: 6dba80e5-2bd7-49fe-bffb-7739c0574d48
                            name: Box Color
                            options:
                              - id: b24e07dc-bc75-4425-83fa-4d212e83114a
                                name: Grey
                                subtitle: null
                                color: null
                                image_large: null
                              - id: 1a7794e5-95cc-4308-a1f0-48925271e49c
                                name: Purple
                                subtitle: null
                                color: null
                                image_large: null
                          - id: 4f2acf33-9f5d-4117-b3f4-8eb82517bc07
                            name: Flavor
                            options:
                              - id: e849793c-c0d3-409a-b915-bbce6be5b37c
                                name: Chocolate Chip
                                subtitle: null
                                color: null
                                image_large: null
                              - id: 5f22280f-64e7-4d8c-a42a-1030e2153b77
                                name: Oatmeal
                                subtitle: null
                                color: null
                                image_large: null
                              - id: e8323403-4ba5-4893-b747-969a4bc2259e
                                name: Sugar
                                subtitle: null
                                color: null
                                image_large: null
                        images: []
                        price: 1000
                        price_is_variable: false
                        restricted_states: []
                        attributes: []
                        updated_at: '2026-06-03T12:25:19Z'
                        status: active
                    list_meta:
                      total_count: 3
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
                  list_meta:
                    $ref: '#/components/schemas/ListMeta'
      security:
        - bearer: []
components:
  schemas:
    Product:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        brand:
          $ref: '#/components/schemas/Brand'
        subtitle:
          type: string
          nullable: true
          description: A description of this product.
        subtitle_short:
          type: string
          nullable: true
          description: >-
            An optional one-line description of this product. When provided, it
            overrides the subtitle when displayed in areas with less space. Not
            always provided.
        recipient_description:
          type: string
          nullable: true
          description: >-
            An optional description of this product with custom verbiage for
            recipients. When provided, it overrides the subtitle for the product
            when displayed to the recipient. Falls back to the subtitle.
        variants_label:
          type: string
          nullable: true
          description: The label for the variants of this product, e.g. "Size" or "Color".
        variants_num_selectable:
          type: integer
          nullable: true
          description: >-
            The number of variants that can be selected for this product. For
            example, if this is a t-shirt, then this would be 1, since you can
            only select one size. If this were a build-a-box of chocolates, this
            could be 3 if you could select 3 flavor variants.
        variants:
          type: array
          items:
            $ref: '#/components/schemas/ProductVariant'
        variant_groups:
          type: array
          items:
            $ref: '#/components/schemas/ProductVariantGroup'
          description: >-
            For products that have multiple types of variants, such as both
            Color and Size, this array contains each group and the options for
            each group. All variant group permutations have a variant generated
            for them, constructed from the options in the order of the groups,
            separated by ` / `, e.g. `Medium / Black` when the groups are Size
            and Color.
        images:
          type: array
          items:
            $ref: '#/components/schemas/ProductImage'
        price:
          type: integer
          description: The price of the product, in cents.
        price_is_variable:
          type: boolean
          description: >-
            Whether the price of this product is variable. If true, then the
            price can be set by the sender.
        price_min:
          type: integer
          nullable: true
          description: >-
            The minimum price of the product, in cents. Only used if
            price_is_variable is true.
        price_max:
          type: integer
          nullable: true
          description: >-
            The maximum price of the product, in cents. Only used if
            price_is_variable is true.
        restricted_states:
          type: array
          items:
            type: string
            description: The US states that this product cannot be shipped to.
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/ProductAttribute'
          description: An array of attributes that describe this product.
        status:
          type: string
          enum:
            - active
            - inactive
          description: >-
            Whether this product is active. Since the product catalog only
            returns active products by default, this is always `true`, except if
            you are a Commerce API customer using a custom catalog, and are
            pulling products with the `custom_catalog_show_inactive` flag.
        updated_at:
          type: string
          format: date-time
          description: >-
            The date and time this product was last updated, ISO 8601 format.
            This is bumped when the product, brand, product variants, product
            attributes, or product images are updated.
        reserved_options:
          type: object
          description: For approved API partners only.
          properties:
            custom_price_tier:
              type: integer
              nullable: true
              description: >-
                For approved API partners only. A custom price tier for this
                product.
          nullable: true
      required:
        - id
        - name
        - brand
        - variants
        - images
        - price
        - price_is_variable
        - restricted_states
    ListMeta:
      type: object
      properties:
        total_count:
          type: integer
          description: The total number of items in this list.
    Brand:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        logo_image:
          $ref: '#/components/schemas/Image'
          nullable: true
          description: The logo image for this brand.
        shipping_price:
          type: integer
          description: The price of shipping for this brand, in cents.
        free_shipping_minimum:
          type: integer
          description: >-
            When set and when the product price is above this amount, shipping
            is free. In cents. Products in a cart for this brand can combine to
            reach this threshold.
          nullable: true
        commerce_revshare_excluded:
          type: boolean
          description: >-
            Whether this brand is excluded from the commerce revenue share. Only
            displayed on the products endpoint when using a commerce app.
          nullable: true
        brand_values:
          type: array
          items:
            type: string
          description: >-
            An array of brand values for this brand. Potential values are USA
            Made, Social Impact Driven, Sustainable, Gluten Free, Vegan, Kosher
            Certified, Female Founded, AAPI Founded, BIPOC Founded, Black
            Founded, LGBTQ+ Founded, and Hispanic Founded.
        brand_sets:
          type: array
          items:
            $ref: '#/components/schemas/BrandSet'
          description: >-
            An array of brand sets for this brand. Only included when using the
            brands endpoint.
          nullable: true
      required:
        - id
        - name
    ProductVariant:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        image_large:
          $ref: '#/components/schemas/Image'
          nullable: true
        subtitle:
          type: string
          nullable: true
      required:
        - id
        - name
    ProductVariantGroup:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          description: The name of the variant group, e.g. "Size" or "Color".
        options:
          type: array
          items:
            $ref: '#/components/schemas/ProductVariantGroupOption'
      required:
        - id
        - name
    ProductImage:
      type: object
      properties:
        id:
          type: string
          format: uuid
        image_large:
          $ref: '#/components/schemas/Image'
      required:
        - id
        - image_large
    ProductAttribute:
      type: object
      properties:
        label:
          type: string
          description: The label for this attribute, e.g. "Materials".
        content:
          type: string
          description: >-
            The content for this attribute, e.g. "80% cotton, 20% elastane".
            This can be text or sanitized HTML (you might choose to sanitize the
            HTML as well). Allowed elements are a (href allowed), div, img (src,
            width height, alt allowed), span, p, br, strong, b, em, i, ol, ul,
            li, and hr.
      required:
        - label
        - content
    Image:
      type: object
      properties:
        url:
          type: string
        width:
          type: integer
        height:
          type: integer
      required:
        - url
    BrandSet:
      type: object
      description: A brand set represents a collection of products from a brand.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        images:
          type: array
          items:
            $ref: '#/components/schemas/BrandSetImage'
          description: An array of images for this brand set.
        products:
          type: array
          items:
            $ref: '#/components/schemas/Product'
          description: An array of products in this brand set.
        categories:
          type: array
          items:
            $ref: '#/components/schemas/BrandSetCategory'
          description: An array of categories this brand set belongs to.
      required:
        - id
        - name
    ProductVariantGroupOption:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          description: >-
            The name of the variant group option, e.g. "Small" for the "Size"
            variant group.
        subtitle:
          type: string
          nullable: true
        color:
          type: string
          nullable: true
          description: The hex color code for this option, e.g. "#000000", if any.
        image_large:
          $ref: '#/components/schemas/Image'
          nullable: true
      required:
        - id
        - name
    BrandSetImage:
      type: object
      properties:
        id:
          type: string
          format: uuid
        image_large:
          $ref: '#/components/schemas/Image'
      required:
        - id
        - image_large
    BrandSetCategory:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        subcategories:
          type: array
          items:
            type: string
          description: An array of subcategory names within this category.
      required:
        - id
        - name
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: Your Goody API key.

````