BigCommerce
Catalog API
Products

Catalog - Products

The Catalog API manages products, categories, brands, bulk pricing rules, and more. To learn more about catalog resources, see the Catalog Overview.

Our Catalog Products endpoints let you create products, perform batch operations on existing products and work with reviews, images, and videos. Note that after a product is created initially, you can manage the nuances of its variations using the Product Modifier, Product Variant, and Product Variant Options endpoints.

Other core product endpoints focus on bulk pricing, complex rules, custom fields, and metafields. Product Variant objects also contain their own metafields. For MSF-enabled stores, the product object also contains product channel assignments and category assignments; read more about products in the MSF context.

This API family also contains an endpoint to Get a catalog summary.

To learn more about authenticating Catalog endpoints, locate the Authentication section at the top of each endpoint, then click Show Details.

Resources

Webhooks

Additional Catalog endpoints

Get All Products

GET /catalog/products

Request

Returns a list of Products. Optional filter parameters can be passed in.

Authentication

  • X-Auth-Token in header - required

Parameters

  • store_hash in path - string
  • Accept in header with default of application/json - string - required

    The MIME type of the response body.

  • id in query - integer

    Filter items by ID.

  • id:in in query - array
  • id:not_in in query - array
  • id:min in query - array
  • id:max in query - array
  • id:greater in query - array
  • id:less in query - array
  • name in query - string

    Filter items by name.

  • mpn in query - string

    Filter items by Manufacturer Part Number (MPN).

  • upc in query - string

    Filter items by UPC.

  • price in query - number

    Filter items by price.

  • weight in query - number

    Filter items by weight.

  • condition in query - string

    Filter items by condition.

    Allowed values: new | used | refurbished
  • brand_id in query - integer

    Filter items by brand_id.

  • date_modified in query - string

    Filter items by date_modified.

  • date_modified:max in query - string

    Filter items by date_modified. For example, date_modified:max=2020-06-15.

  • date_modified:min in query - string

    Filter items by date_modified. For example, date_modified:min=2018-06-15.

  • date_last_imported in query - string

    Filter items by date_last_imported.

  • date_last_imported:not in query - string

    Filter items by date_last_imported. For example, date_last_imported:not=2015-08-21T22%3A53%3A23%2B00%3A00.

  • date_last_imported:max in query - string

    Filter items by date_last_imported. For example, date_last_imported:max=2015-08-21T22%3A53%3A23%2B00%3A00.

  • date_last_imported:min in query - string

    Filter items by date_last_imported. For example, date_last_imported:min=2015-08-21T22%3A53%3A23%2B00%3A00.

  • is_visible in query - boolean

    Filter items based on whether the product is currently visible on the storefront.

  • is_featured in query - integer

    Filter items by is_featured. 1 for true, 0 for false.

    Allowed values: 1 | 0
  • is_free_shipping in query - integer

    Filter items by is_free_shipping. 1 for true, 0 for false.

  • inventory_level in query - integer

    Filter items by inventory_level.

  • inventory_level:in in query - integer
  • inventory_level:not_in in query - integer
  • inventory_level:min in query - integer
  • inventory_level:max in query - integer
  • inventory_level:greater in query - integer
  • inventory_level:less in query - integer
  • inventory_low in query - integer

    Filter items by inventory_low. Values: 1, 0.

  • out_of_stock in query - integer

    Filter items by out_of_stock. To enable the filter, pass out_of_stock=1.

  • total_sold in query - integer

    Filter items by total_sold.

  • type in query - string

    Filter items by type.

    Allowed values: digital | physical
  • categories in query - integer

    Filter items by categories. If a product is in more than one category, using this query will not return the product. Instead use categories:in=12.

  • keyword in query - string

    Filter items by keywords found in the name or sku fields

  • keyword_context in query - string

    Set context used by the search algorithm to return results targeted towards the specified group. Use merchant to help merchants search their own catalog. Use shopper to return shopper-facing search results.

    Allowed values: shopper | merchant
  • status in query - integer

    Filter items by status.

  • include in query - array

    Sub-resources to include on a product, in a comma-separated list. If options or modifiers is used, results are limited to 10 per page.

    Note: The following sub-resources include:

    • variants
    • images
    • custom_fields
    • bulk_pricing_rules
    • primary_image
    • modifiers
    • options
    • videos
  • include_fields in query - string

    Fields to include, in a comma-separated list. The ID and the specified fields will be returned.

  • exclude_fields in query - string

    Fields to exclude, in a comma-separated list. The specified fields will be excluded from a response. The ID cannot be excluded.

  • availability in query - string

    Filter items by availability. Values are: available, disabled, preorder.

    Allowed values: available | disabled | preorder
  • page in query - integer

    Specifies the page number in a limited (paginated) list of products.

  • limit in query - integer

    Controls the number of items per page in a limited (paginated) list of products. The default product limit is 50 with a maximum limit of 250.

  • direction in query - string

    Sort direction. Acceptable values are: asc, desc.

    Allowed values: asc | desc
  • sort in query - string

    Field name to sort by. Note: Since id increments when new products are added, you can use that field to sort by product create date.

    Allowed values: id | name | sku | price | date_modified | date_last_imported | inventory_level | is_visible | total_sold
  • categories:in in query - array

    Filter items by categories. Use for products in multiple categories. For example, categories:in=12,15.

  • sku in query - string

    Filter items by main SKU. To filter by variant SKU, see Get All Variants.

  • sku:in in query - array

    Filter items by SKU.

example

Response

Body

object | application/json
  • data
    array[object]

  • meta
    object

    Data about the response, including pagination and collection totals.

example

Update Products (Batch)

PUT /catalog/products

Request

Updates products in batches. Batches are limited to 10 products.

Required Fields

  • id - product id is required for batch updates to products.

Read-Only Fields

  • id
  • date_created
  • date_modified
  • calculated_price
  • base_variant_id

Authentication

  • X-Auth-Token in header - required

Parameters

  • store_hash in path - string
  • Content-Type in header with default of application/json - string - required

    The MIME type of the request body.

  • include_fields in query - string

    Fields to include, in a comma-separated list. The ID and the specified fields will be returned.

Body

array | application/json

The model for batch updating products.

  • id
    integer
    required

    Unique ID of the Product. Read-Only.

  • name
    string
    required

    A unique product name.

    >= 1 characters<= 250 characters

    Example: Smith Journal 13

  • type
    string
    required

    The product type. One of: physical - a physical stock unit, digital - a digital download.

    Allowed: physical | digital

    Example: physical

  • sku
    string

    A unique user-defined alphanumeric product code/stock keeping unit (SKU).

    >= 0 characters<= 255 characters

    Example: SM-13

  • description
    string

    The product description, which can include HTML formatting.

    Example: <p><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel metus ac est egestas porta sed quis erat. Integer id nulla massa. Proin vitae enim nisi. Praesent non dignissim nulla. Nulla mattis id massa ac pharetra. Mauris et nisi in dolor aliquam sodales. Aliquam dui nisl, dictum quis leo sit amet, rutrum volutpat metus. Curabitur libero nunc, interdum ac libero non, tristique porttitor metus. Ut non dignissim lorem, in vestibulum leo. Vivamus sodales quis turpis eget.</span></p>

  • weight
    number
    required

    Weight of the product, which can be used when calculating shipping costs. This is based on the unit set on the store

  • width
    number

    Width of the product, which can be used when calculating shipping costs.

  • depth
    number

    Depth of the product, which can be used when calculating shipping costs.

  • height
    number

    Height of the product, which can be used when calculating shipping costs.

  • price
    number
    required

    The price of the product. The price should include or exclude tax, based on the store settings.

  • cost_price
    number

    The cost price of the product. Stored for reference only; it is not used or displayed anywhere on the store.

  • retail_price
    number

    The retail cost of the product. If entered, the retail cost price will be shown on the product page.

  • sale_price
    number

    If entered, the sale price will be used instead of value in the price field when calculating the productʼs cost.

  • map_price
    number

    Minimum Advertised Price

  • tax_class_id
    number

    The ID of the tax class applied to the product. (NOTE: Value ignored if automatic tax is enabled.)

  • product_tax_code
    string

    Tax Codes, such as AvaTax System Tax Codes, identify products and services that fall into special sales-tax categories. By using these codes, merchants who subscribe to a tax provider integration, such as BigCommerceʼs Avalara Premium, can calculate sales taxes more accurately. Stores without a tax provider will ignore the code when calculating sales tax. Do not pass more than one code. The codes are case-sensitive. For details, please see the tax providerʼs documentation.

    >= 0 characters<= 255 characters
  • categories
    array[number]

    An array of IDs for the categories to which this product belongs. When updating a product, if an array of categories is supplied, all product categories will be overwritten. Does not accept more than 1,000 ID values.

  • brand_id
    integer

    You can add a product to an existing brand during a product /PUT or /POST. Use either the brand_id or the brand_name field. The response body can include brand_id.

  • brand_name
    string

    You can create the brand during a product PUT or POST request. If the brand already exists, the product /PUT or /POST request adds the product to the brand. If not, the product /PUT or /POST request creates the brand and then adds the product to the brand. Brand name is not case-sensitive; "Common Good" and "Common good" are the same. Use either the brand_id or the brand_name field. The response body does not include brand_name.

    Example: Common Good

  • inventory_level
    integer

    Current inventory level of the product. You must track inventory by product for this to take effect (see the inventory_tracking field). The Catalog API returns the inventory for only the default location.

    The inventory for a product cannot exceed 2,147,483,647 in the catalog. If you exceed the limit, the store sets the inventory level to the limit.

    The Catalog API handles limits in a different way than the Inventory API. For more information, see Limit handling.

  • inventory_warning_level
    integer

    Inventory warning level for the product. When the productʼs inventory level drops below the warning level, the store owner will be informed. Simple inventory tracking must be enabled (see the inventory_tracking field) for this to take any effect.

  • inventory_tracking
    string

    The type of inventory tracking for the product. Values are: none - inventory levels will not be tracked; product - inventory levels will be tracked using the inventory_level and inventory_warning_level fields; variant - inventory levels will be tracked based on variants, which maintain their own warning levels and inventory levels.

    Allowed: none | product | variant

  • fixed_cost_shipping_price
    number

    A fixed shipping cost for the product. If defined, this value will be used during checkout instead of normal shipping-cost calculation.

  • is_free_shipping
    boolean

    Flag used to indicate whether the product has free shipping. If true, the shipping cost for the product will be zero.

  • is_visible
    boolean

    Flag to determine whether the product should be displayed to customers browsing the store. If true, the product will be displayed. If false, the product will be hidden from view.

  • is_featured
    boolean

    Flag to determine whether the product should be included in the featured products panel when viewing the store.

  • related_products
    array[integer]

    An array of IDs for the related products.

  • warranty
    string

    Warranty information displayed on the product page. Can include HTML formatting.

    >= 0 characters<= 65535 characters
  • bin_picking_number
    string

    The BIN picking number for the product.

    >= 0 characters<= 255 characters
  • layout_file
    string

    The layout template file used to render this product category. This field is writable only for stores with a Blueprint theme applied. For stores with a Stencil theme applied, see Custom Template Associations.

    >= 0 characters<= 500 characters
  • upc
    string

    The product UPC code, which is used in feeds for shopping comparison sites and external channel integrations.

    >= 0 characters<= 32 characters
  • search_keywords
    string

    A comma-separated list of keywords that can be used to locate the product when searching the store.

    >= 0 characters<= 65535 characters
  • availability_description
    string

    Availability text displayed on the checkout page, under the product title. Tells the customer how long it will normally take to ship this product, such as: 'Usually ships in 24 hours.'

    >= 0 characters<= 255 characters
  • availability
    string

    Availability of the product. (Corresponds to the productʼs Purchasability section in the control panel.) Supported values: available - the product is available for purchase; disabled - the product is listed on the storefront, but cannot be purchased; preorder - the product is listed for pre-orders.

    Allowed: available | disabled | preorder

  • gift_wrapping_options_type
    string

    Type of gift-wrapping options. Values: any - allow any gift-wrapping options in the store; none - disallow gift-wrapping on the product; list – provide a list of IDs in the gift_wrapping_options_list field.

    Always included in the response body; not applicable for the include_fields and exclude_fields query parameters.

    Allowed: any | none | list

  • gift_wrapping_options_list
    array[integer]

    A list of gift-wrapping option IDs.

    Always included in the response body; not applicable for the include_fields and exclude_fields query parameters.

  • sort_order
    integer

    Priority to give this product when included in product lists on category pages and in search results. Lower integers will place the product closer to the top of the results.

  • condition
    string

    The product condition. Will be shown on the product page if the is_condition_shown fieldʼs value is true. Possible values: New, Used, Refurbished.

    Allowed: New | Used | Refurbished

  • is_condition_shown
    boolean

    Flag used to determine whether the product condition is shown to the customer on the product page.

  • order_quantity_minimum
    integer

    The minimum quantity an order must contain, to be eligible to purchase this product.

  • order_quantity_maximum
    integer

    The maximum quantity an order can contain when purchasing the product.

  • page_title
    string

    Custom title for the product page. If not defined, the product name will be used as the meta title.

    >= 0 characters<= 255 characters
  • meta_keywords
    array[string]

    Custom meta keywords for the product page. If not defined, the storeʼs default keywords will be used.

    >= 0 characters<= 65535 characters
  • meta_description
    string

    Custom meta description for the product page. If not defined, the storeʼs default meta description will be used.

    >= 0 characters<= 65535 characters
  • view_count
    integerdeprecated

    The number of times the product has been viewed.

  • preorder_release_date
    string or null

    Pre-order release date. See the availability field for details on setting a productʼs availability to accept pre-orders.

  • preorder_message
    string

    Custom expected-date message to display on the product page. If undefined, the message defaults to the storewide setting. Can contain the %%DATE%% placeholder, which will be substituted for the release date.

    >= 0 characters<= 255 characters
  • is_preorder_only
    boolean

    If set to true then on the preorder release date the preorder status will automatically be removed. If set to false, then on the release date the preorder status will not be removed. It will need to be changed manually either in the control panel or using the API. Using the API set availability to available.

  • is_price_hidden
    boolean

    False by default, indicating that this productʼs price should be shown on the product page. If set to true, the price is hidden. (NOTE: To successfully set is_price_hidden to true, the availability value must be disabled.)

  • price_hidden_label
    string

    By default, an empty string. If is_price_hidden is true, the value of price_hidden_label is displayed instead of the price. (NOTE: To successfully set a non-empty string value with is_price_hidden set to true, the availability value must be disabled.)

    >= 0 characters<= 200 characters
  • custom_url
    object

    The custom URL for the product on the storefront.

  • open_graph_type
    string

    Type of product, defaults to product.

    Allowed: product | album | book | drink | food | game | movie | song | tv_show

  • open_graph_title
    string

    Title of the product, if not specified the product name will be used instead.

  • open_graph_description
    string

    Description to use for the product, if not specified then the meta_description will be used instead.

  • open_graph_use_meta_description
    boolean

    Flag to determine if product description or open graph description is used.

  • open_graph_use_product_name
    boolean

    Flag to determine if product name or open graph name is used.

  • open_graph_use_image
    boolean

    Flag to determine if product image or open graph image is used.

  • gtin
    string

    Global Trade Item Number

  • mpn
    string

    Manufacturer Part Number

  • date_last_imported
    string

    the date when the Product had been imported

  • reviews_rating_sum
    integer

    The total (cumulative) rating for the product.

    Example: 3

  • reviews_count
    integer

    The number of times the product has been rated.

    Example: 4

  • total_sold
    integer

    The total quantity of this product sold.

    Example: 80

  • custom_fields
    array[object]

    200 maximum custom fields per product. 255 maximum characters per custom field. The default rate limit for this endpoint is 40 concurrent requests.

  • bulk_pricing_rules
    array[object]

  • images
    array[object]

  • videos
    array[object]

    The Catalog API integrates with third-party YouTube. The YouTube Terms of Service and Google Privacy Policy apply, as indicated in our Privacy Policy and Terms of Service.

  • variants
    array[object]

    example-1

    Response

    Body

    object | application/json
    • data
      array[object]

    • meta
      object

      Data about the response, including pagination and collection totals.

    example-1

    Create a Product

    POST /catalog/products

    Request

    Creates a Product. Only one product can be created at a time; however, you can create multiple product variants using the variants array.

    Required Fields:

    • name
    • type
    • weight
    • price

    Read-Only Fields

    • id
    • date_created
    • date_modified
    • calculated_price
    • base_variant_id

    Limits

    • 250 characters product name length.
    • A product can have up to 1000 images. Each image file or image uploaded by URL can be up to 8 MB.

    Usage Notes

    • You can create multiple product variants using the variants array.
    • This endpoint accepts a video array. To create a product video that accepts a video object, see Create a Product Video for information.

    Authentication

    • X-Auth-Token in header - required

    Parameters

    • store_hash in path - string
    • Content-Type in header with default of application/json - string - required

      The MIME type of the request body.

    • include_fields in query - string

      Fields to include, in a comma-separated list. The ID and the specified fields will be returned.

    Body

    object | application/json

    Shared Product properties used in:

    • POST
    • PUT
    • GET
    • name
      string
      required

      A unique product name.

      >= 1 characters<= 250 characters

      Example: Smith Journal 13

    • type
      string
      required

      The product type. One of: physical - a physical stock unit, digital - a digital download.

      Allowed: physical | digital

      Example: physical

    • sku
      string

      A unique user-defined alphanumeric product code/stock keeping unit (SKU).

      >= 0 characters<= 255 characters

      Example: SM-13

    • description
      string

      The product description, which can include HTML formatting.

      Example: <p><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel metus ac est egestas porta sed quis erat. Integer id nulla massa. Proin vitae enim nisi. Praesent non dignissim nulla. Nulla mattis id massa ac pharetra. Mauris et nisi in dolor aliquam sodales. Aliquam dui nisl, dictum quis leo sit amet, rutrum volutpat metus. Curabitur libero nunc, interdum ac libero non, tristique porttitor metus. Ut non dignissim lorem, in vestibulum leo. Vivamus sodales quis turpis eget.</span></p>

    • weight
      number
      required

      Weight of the product, which can be used when calculating shipping costs. This is based on the unit set on the store

    • width
      number

      Width of the product, which can be used when calculating shipping costs.

    • depth
      number

      Depth of the product, which can be used when calculating shipping costs.

    • height
      number

      Height of the product, which can be used when calculating shipping costs.

    • price
      number
      required

      The price of the product. The price should include or exclude tax, based on the store settings.

    • cost_price
      number

      The cost price of the product. Stored for reference only; it is not used or displayed anywhere on the store.

    • retail_price
      number

      The retail cost of the product. If entered, the retail cost price will be shown on the product page.

    • sale_price
      number

      If entered, the sale price will be used instead of value in the price field when calculating the productʼs cost.

    • map_price
      number

      Minimum Advertised Price

    • tax_class_id
      number

      The ID of the tax class applied to the product. (NOTE: Value ignored if automatic tax is enabled.)

    • product_tax_code
      string

      Tax Codes, such as AvaTax System Tax Codes, identify products and services that fall into special sales-tax categories. By using these codes, merchants who subscribe to a tax provider integration, such as BigCommerceʼs Avalara Premium, can calculate sales taxes more accurately. Stores without a tax provider will ignore the code when calculating sales tax. Do not pass more than one code. The codes are case-sensitive. For details, please see the tax providerʼs documentation.

      >= 0 characters<= 255 characters
    • categories
      array[number]

      An array of IDs for the categories to which this product belongs. When updating a product, if an array of categories is supplied, all product categories will be overwritten. Does not accept more than 1,000 ID values.

    • brand_id
      integer

      You can add a product to an existing brand during a product /PUT or /POST. Use either the brand_id or the brand_name field. The response body can include brand_id.

    • brand_name
      string

      You can create the brand during a product PUT or POST request. If the brand already exists, the product /PUT or /POST request adds the product to the brand. If not, the product /PUT or /POST request creates the brand and then adds the product to the brand. Brand name is not case-sensitive; "Common Good" and "Common good" are the same. Use either the brand_id or the brand_name field. The response body does not include brand_name.

      Example: Common Good

    • inventory_level
      integer

      Current inventory level of the product. You must track inventory by product for this to take effect (see the inventory_tracking field). The Catalog API returns the inventory for only the default location.

      The inventory for a product cannot exceed 2,147,483,647 in the catalog. If you exceed the limit, the store sets the inventory level to the limit.

      The Catalog API handles limits in a different way than the Inventory API. For more information, see Limit handling.

    • inventory_warning_level
      integer

      Inventory warning level for the product. When the productʼs inventory level drops below the warning level, the store owner will be informed. Simple inventory tracking must be enabled (see the inventory_tracking field) for this to take any effect.

    • inventory_tracking
      string

      The type of inventory tracking for the product. Values are: none - inventory levels will not be tracked; product - inventory levels will be tracked using the inventory_level and inventory_warning_level fields; variant - inventory levels will be tracked based on variants, which maintain their own warning levels and inventory levels.

      Allowed: none | product | variant

    • fixed_cost_shipping_price
      number

      A fixed shipping cost for the product. If defined, this value will be used during checkout instead of normal shipping-cost calculation.

    • is_free_shipping
      boolean

      Flag used to indicate whether the product has free shipping. If true, the shipping cost for the product will be zero.

    • is_visible
      boolean

      Flag to determine whether the product should be displayed to customers browsing the store. If true, the product will be displayed. If false, the product will be hidden from view.

    • is_featured
      boolean

      Flag to determine whether the product should be included in the featured products panel when viewing the store.

    • related_products
      array[integer]

      An array of IDs for the related products.

    • warranty
      string

      Warranty information displayed on the product page. Can include HTML formatting.

      >= 0 characters<= 65535 characters
    • bin_picking_number
      string

      The BIN picking number for the product.

      >= 0 characters<= 255 characters
    • layout_file
      string

      The layout template file used to render this product category. This field is writable only for stores with a Blueprint theme applied. For stores with a Stencil theme applied, see Custom Template Associations.

      >= 0 characters<= 500 characters
    • upc
      string

      The product UPC code, which is used in feeds for shopping comparison sites and external channel integrations.

      >= 0 characters<= 32 characters
    • search_keywords
      string

      A comma-separated list of keywords that can be used to locate the product when searching the store.

      >= 0 characters<= 65535 characters
    • availability_description
      string

      Availability text displayed on the checkout page, under the product title. Tells the customer how long it will normally take to ship this product, such as: 'Usually ships in 24 hours.'

      >= 0 characters<= 255 characters
    • availability
      string

      Availability of the product. (Corresponds to the productʼs Purchasability section in the control panel.) Supported values: available - the product is available for purchase; disabled - the product is listed on the storefront, but cannot be purchased; preorder - the product is listed for pre-orders.

      Allowed: available | disabled | preorder

    • gift_wrapping_options_type
      string

      Type of gift-wrapping options. Values: any - allow any gift-wrapping options in the store; none - disallow gift-wrapping on the product; list – provide a list of IDs in the gift_wrapping_options_list field.

      Always included in the response body; not applicable for the include_fields and exclude_fields query parameters.

      Allowed: any | none | list

    • gift_wrapping_options_list
      array[integer]

      A list of gift-wrapping option IDs.

      Always included in the response body; not applicable for the include_fields and exclude_fields query parameters.

    • sort_order
      integer

      Priority to give this product when included in product lists on category pages and in search results. Lower integers will place the product closer to the top of the results.

    • condition
      string

      The product condition. Will be shown on the product page if the is_condition_shown fieldʼs value is true. Possible values: New, Used, Refurbished.

      Allowed: New | Used | Refurbished

    • is_condition_shown
      boolean

      Flag used to determine whether the product condition is shown to the customer on the product page.

    • order_quantity_minimum
      integer

      The minimum quantity an order must contain, to be eligible to purchase this product.

    • order_quantity_maximum
      integer

      The maximum quantity an order can contain when purchasing the product.

    • page_title
      string

      Custom title for the product page. If not defined, the product name will be used as the meta title.

      >= 0 characters<= 255 characters
    • meta_keywords
      array[string]

      Custom meta keywords for the product page. If not defined, the storeʼs default keywords will be used.

      >= 0 characters<= 65535 characters
    • meta_description
      string

      Custom meta description for the product page. If not defined, the storeʼs default meta description will be used.

      >= 0 characters<= 65535 characters
    • view_count
      integerdeprecated

      The number of times the product has been viewed.

    • preorder_release_date
      string or null

      Pre-order release date. See the availability field for details on setting a productʼs availability to accept pre-orders.

    • preorder_message
      string

      Custom expected-date message to display on the product page. If undefined, the message defaults to the storewide setting. Can contain the %%DATE%% placeholder, which will be substituted for the release date.

      >= 0 characters<= 255 characters
    • is_preorder_only
      boolean

      If set to true then on the preorder release date the preorder status will automatically be removed. If set to false, then on the release date the preorder status will not be removed. It will need to be changed manually either in the control panel or using the API. Using the API set availability to available.

    • is_price_hidden
      boolean

      False by default, indicating that this productʼs price should be shown on the product page. If set to true, the price is hidden. (NOTE: To successfully set is_price_hidden to true, the availability value must be disabled.)

    • price_hidden_label
      string

      By default, an empty string. If is_price_hidden is true, the value of price_hidden_label is displayed instead of the price. (NOTE: To successfully set a non-empty string value with is_price_hidden set to true, the availability value must be disabled.)

      >= 0 characters<= 200 characters
    • custom_url
      object

      The custom URL for the product on the storefront.

    • open_graph_type
      string

      Type of product, defaults to product.

      Allowed: product | album | book | drink | food | game | movie | song | tv_show

    • open_graph_title
      string

      Title of the product, if not specified the product name will be used instead.

    • open_graph_description
      string

      Description to use for the product, if not specified then the meta_description will be used instead.

    • open_graph_use_meta_description
      boolean

      Flag to determine if product description or open graph description is used.

    • open_graph_use_product_name
      boolean

      Flag to determine if product name or open graph name is used.

    • open_graph_use_image
      boolean

      Flag to determine if product image or open graph image is used.

    • gtin
      string

      Global Trade Item Number

    • mpn
      string

      Manufacturer Part Number

    • date_last_imported
      string

      the date when the Product had been imported

    • reviews_rating_sum
      integer

      The total (cumulative) rating for the product.

      Example: 3

    • reviews_count
      integer

      The number of times the product has been rated.

      Example: 4

    • total_sold
      integer

      The total quantity of this product sold.

      Example: 80

    • custom_fields
      array[object]

      200 maximum custom fields per product. 255 maximum characters per custom field. The default rate limit for this endpoint is 40 concurrent requests.

    • bulk_pricing_rules
      array[object]

    • images
      array[object]

    • videos
      array[object]

      The Catalog API integrates with third-party YouTube. The YouTube Terms of Service and Google Privacy Policy apply, as indicated in our Privacy Policy and Terms of Service.

    • variants
      array[object]

    example

    Response

    Body

    object | application/json
    • data

    • meta
      object

      Response metadata.

    example

    Delete Products

    DELETE /catalog/products

    Request

    To delete Product objects, you must include a filter. This prevents inadvertently deleting all Product objects in a store.

    Note

    The maximum number of products you can delete at one time is 250.

    Example: To delete products with IDs 1,2 and 3, use DELETE /v3/catalog/products?id:in=1,2,3.

    Authentication

    • X-Auth-Token in header - required

    Parameters

    • store_hash in path - string
    • Accept in header with default of application/json - string - required

      The MIME type of the response body.

    • name in query - string

      Filter items by name.

    • sku in query - string

      Filter items by SKU.

    • price in query - number

      Filter items by price.

    • weight in query - number

      Filter items by weight.

    • condition in query - string

      Filter items by condition.

      Allowed values: new | used | refurbished
    • brand_id in query - integer

      Filter items by brand_id.

    • date_modified in query - string

      Filter items by date_modified. For example v3/catalog/products?date_modified:min=2018-06-15

    • date_last_imported in query - string

      Filter items by date_last_imported. For example v3/catalog/products?date_last_imported:min=2015-08-21T22%3A53%3A23%2B00%3A00

    • is_visible in query - boolean

      Filter items by if visible on the storefront.

    • is_featured in query - integer

      Filter items by is_featured.

    • id:in in query - array

      Filter by product ID(s).

    • inventory_level in query - integer

      Filter items by inventory_level.

    • total_sold in query - integer

      Filter items by total_sold.

    • type in query - string

      Filter items by type: physical or digital.

      Allowed values: digital | physical
    • categories in query - integer

      Filter items by categories. If a product is in more than one category, using this query will not return the product. Instead use categories:in=12.

    • keyword in query - string

      Filter items by keywords found in the name, description, or sku fields, or in the brand name.

    example

    Response

    Get a Product

    GET /catalog/products/{product_id}

    Request

    Returns a single Product. Optional parameters can be passed in.

    Authentication

    • X-Auth-Token in header - required

    Parameters

    • store_hash in path - string
    • Accept in header with default of application/json - string - required

      The MIME type of the response body.

    • product_id in path - integer - required

      The ID of the Product to which the resource belongs.

    • include in query - array

      Sub-resources to include on a product, in a comma-separated list. If options or modifiers is used, results are limited to 10 per page.

    • include_fields in query - string

      Fields to include, in a comma-separated list. The ID and the specified fields will be returned.

    • exclude_fields in query - string

      Fields to exclude, in a comma-separated list. The specified fields will be excluded from a response. The ID cannot be excluded.

    example

    Response

    Body

    object | application/json
    • data

    • meta
      object

      Response metadata.

    example

    Update a Product

    PUT /catalog/products/{product_id}

    Request

    Updates a Product.

    Limits

    • A product can have up to 1000 images. Each image file or image uploaded by URL can be up to 8 MB.

    Read-Only Fields

    • id
    • date_created
    • date_modified
    • calculated_price
    • base_variant_id

    Authentication

    • X-Auth-Token in header - required

    Parameters

    • store_hash in path - string
    • Content-Type in header with default of application/json - string - required

      The MIME type of the request body.

    • include_fields in query - string

      Sub-resources to include on a product, in a comma-separated list. If options or modifiers is used, results are limited to 10 per page. The ID and the specified fields will be returned.

      Allowed values: variants | images | custom_fields | bulk_pricing_rules | primary_image | modifiers | options | videos

    Body

    application/json

    The model for a PUT to update a product.

    • name
      string
      required

      A unique product name.

      >= 1 characters<= 250 characters

      Example: Smith Journal 13

    • type
      string
      required

      The product type. One of: physical - a physical stock unit, digital - a digital download.

      Allowed: physical | digital

      Example: physical

    • sku
      string

      A unique user-defined alphanumeric product code/stock keeping unit (SKU).

      >= 0 characters<= 255 characters

      Example: SM-13

    • description
      string

      The product description, which can include HTML formatting.

      Example: <p><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel metus ac est egestas porta sed quis erat. Integer id nulla massa. Proin vitae enim nisi. Praesent non dignissim nulla. Nulla mattis id massa ac pharetra. Mauris et nisi in dolor aliquam sodales. Aliquam dui nisl, dictum quis leo sit amet, rutrum volutpat metus. Curabitur libero nunc, interdum ac libero non, tristique porttitor metus. Ut non dignissim lorem, in vestibulum leo. Vivamus sodales quis turpis eget.</span></p>

    • weight
      number
      required

      Weight of the product, which can be used when calculating shipping costs. This is based on the unit set on the store

    • width
      number

      Width of the product, which can be used when calculating shipping costs.

    • depth
      number

      Depth of the product, which can be used when calculating shipping costs.

    • height
      number

      Height of the product, which can be used when calculating shipping costs.

    • price
      number
      required

      The price of the product. The price should include or exclude tax, based on the store settings.

    • cost_price
      number

      The cost price of the product. Stored for reference only; it is not used or displayed anywhere on the store.

    • retail_price
      number

      The retail cost of the product. If entered, the retail cost price will be shown on the product page.

    • sale_price
      number

      If entered, the sale price will be used instead of value in the price field when calculating the productʼs cost.

    • map_price
      number

      Minimum Advertised Price

    • tax_class_id
      number

      The ID of the tax class applied to the product. (NOTE: Value ignored if automatic tax is enabled.)

    • product_tax_code
      string

      Tax Codes, such as AvaTax System Tax Codes, identify products and services that fall into special sales-tax categories. By using these codes, merchants who subscribe to a tax provider integration, such as BigCommerceʼs Avalara Premium, can calculate sales taxes more accurately. Stores without a tax provider will ignore the code when calculating sales tax. Do not pass more than one code. The codes are case-sensitive. For details, please see the tax providerʼs documentation.

      >= 0 characters<= 255 characters
    • categories
      array[number]

      An array of IDs for the categories to which this product belongs. When updating a product, if an array of categories is supplied, all product categories will be overwritten. Does not accept more than 1,000 ID values.

    • brand_id
      integer

      You can add a product to an existing brand during a product /PUT or /POST. Use either the brand_id or the brand_name field. The response body can include brand_id.

    • brand_name
      string

      You can create the brand during a product PUT or POST request. If the brand already exists, the product /PUT or /POST request adds the product to the brand. If not, the product /PUT or /POST request creates the brand and then adds the product to the brand. Brand name is not case-sensitive; "Common Good" and "Common good" are the same. Use either the brand_id or the brand_name field. The response body does not include brand_name.

      Example: Common Good

    • inventory_level
      integer

      Current inventory level of the product. You must track inventory by product for this to take effect (see the inventory_tracking field). The Catalog API returns the inventory for only the default location.

      The inventory for a product cannot exceed 2,147,483,647 in the catalog. If you exceed the limit, the store sets the inventory level to the limit.

      The Catalog API handles limits in a different way than the Inventory API. For more information, see Limit handling.

    • inventory_warning_level
      integer

      Inventory warning level for the product. When the productʼs inventory level drops below the warning level, the store owner will be informed. Simple inventory tracking must be enabled (see the inventory_tracking field) for this to take any effect.

    • inventory_tracking
      string

      The type of inventory tracking for the product. Values are: none - inventory levels will not be tracked; product - inventory levels will be tracked using the inventory_level and inventory_warning_level fields; variant - inventory levels will be tracked based on variants, which maintain their own warning levels and inventory levels.

      Allowed: none | product | variant

    • fixed_cost_shipping_price
      number

      A fixed shipping cost for the product. If defined, this value will be used during checkout instead of normal shipping-cost calculation.

    • is_free_shipping
      boolean

      Flag used to indicate whether the product has free shipping. If true, the shipping cost for the product will be zero.

    • is_visible
      boolean

      Flag to determine whether the product should be displayed to customers browsing the store. If true, the product will be displayed. If false, the product will be hidden from view.

    • is_featured
      boolean

      Flag to determine whether the product should be included in the featured products panel when viewing the store.

    • related_products
      array[integer]

      An array of IDs for the related products.

    • warranty
      string

      Warranty information displayed on the product page. Can include HTML formatting.

      >= 0 characters<= 65535 characters
    • bin_picking_number
      string

      The BIN picking number for the product.

      >= 0 characters<= 255 characters
    • layout_file
      string

      The layout template file used to render this product category. This field is writable only for stores with a Blueprint theme applied. For stores with a Stencil theme applied, see Custom Template Associations.

      >= 0 characters<= 500 characters
    • upc
      string

      The product UPC code, which is used in feeds for shopping comparison sites and external channel integrations.

      >= 0 characters<= 32 characters
    • search_keywords
      string

      A comma-separated list of keywords that can be used to locate the product when searching the store.

      >= 0 characters<= 65535 characters
    • availability_description
      string

      Availability text displayed on the checkout page, under the product title. Tells the customer how long it will normally take to ship this product, such as: 'Usually ships in 24 hours.'

      >= 0 characters<= 255 characters
    • availability
      string

      Availability of the product. (Corresponds to the productʼs Purchasability section in the control panel.) Supported values: available - the product is available for purchase; disabled - the product is listed on the storefront, but cannot be purchased; preorder - the product is listed for pre-orders.

      Allowed: available | disabled | preorder

    • gift_wrapping_options_type
      string

      Type of gift-wrapping options. Values: any - allow any gift-wrapping options in the store; none - disallow gift-wrapping on the product; list – provide a list of IDs in the gift_wrapping_options_list field.

      Always included in the response body; not applicable for the include_fields and exclude_fields query parameters.

      Allowed: any | none | list

    • gift_wrapping_options_list
      array[integer]

      A list of gift-wrapping option IDs.

      Always included in the response body; not applicable for the include_fields and exclude_fields query parameters.

    • sort_order
      integer

      Priority to give this product when included in product lists on category pages and in search results. Lower integers will place the product closer to the top of the results.

    • condition
      string

      The product condition. Will be shown on the product page if the is_condition_shown fieldʼs value is true. Possible values: New, Used, Refurbished.

      Allowed: New | Used | Refurbished

    • is_condition_shown
      boolean

      Flag used to determine whether the product condition is shown to the customer on the product page.

    • order_quantity_minimum
      integer

      The minimum quantity an order must contain, to be eligible to purchase this product.

    • order_quantity_maximum
      integer

      The maximum quantity an order can contain when purchasing the product.

    • page_title
      string

      Custom title for the product page. If not defined, the product name will be used as the meta title.

      >= 0 characters<= 255 characters
    • meta_keywords
      array[string]

      Custom meta keywords for the product page. If not defined, the storeʼs default keywords will be used.

      >= 0 characters<= 65535 characters
    • meta_description
      string

      Custom meta description for the product page. If not defined, the storeʼs default meta description will be used.

      >= 0 characters<= 65535 characters
    • view_count
      integerdeprecated

      The number of times the product has been viewed.

    • preorder_release_date
      string or null

      Pre-order release date. See the availability field for details on setting a productʼs availability to accept pre-orders.

    • preorder_message
      string

      Custom expected-date message to display on the product page. If undefined, the message defaults to the storewide setting. Can contain the %%DATE%% placeholder, which will be substituted for the release date.

      >= 0 characters<= 255 characters
    • is_preorder_only
      boolean

      If set to true then on the preorder release date the preorder status will automatically be removed. If set to false, then on the release date the preorder status will not be removed. It will need to be changed manually either in the control panel or using the API. Using the API set availability to available.

    • is_price_hidden
      boolean

      False by default, indicating that this productʼs price should be shown on the product page. If set to true, the price is hidden. (NOTE: To successfully set is_price_hidden to true, the availability value must be disabled.)

    • price_hidden_label
      string

      By default, an empty string. If is_price_hidden is true, the value of price_hidden_label is displayed instead of the price. (NOTE: To successfully set a non-empty string value with is_price_hidden set to true, the availability value must be disabled.)

      >= 0 characters<= 200 characters
    • custom_url
      object

      The custom URL for the product on the storefront.

    • open_graph_type
      string

      Type of product, defaults to product.

      Allowed: product | album | book | drink | food | game | movie | song | tv_show

    • open_graph_title
      string

      Title of the product, if not specified the product name will be used instead.

    • open_graph_description
      string

      Description to use for the product, if not specified then the meta_description will be used instead.

    • open_graph_use_meta_description
      boolean

      Flag to determine if product description or open graph description is used.

    • open_graph_use_product_name
      boolean

      Flag to determine if product name or open graph name is used.

    • open_graph_use_image
      boolean

      Flag to determine if product image or open graph image is used.

    • gtin
      string

      Global Trade Item Number

    • mpn
      string

      Manufacturer Part Number

    • date_last_imported
      string

      the date when the Product had been imported

    • reviews_rating_sum
      integer

      The total (cumulative) rating for the product.

      Example: 3

    • reviews_count
      integer

      The number of times the product has been rated.

      Example: 4

    • total_sold
      integer

      The total quantity of this product sold.

      Example: 80

    • custom_fields
      array[object]

      200 maximum custom fields per product. 255 maximum characters per custom field. The default rate limit for this endpoint is 40 concurrent requests.

    • bulk_pricing_rules
      array[object]

    • images
      array[object]

    • videos
      array[object]

      The Catalog API integrates with third-party YouTube. The YouTube Terms of Service and Google Privacy Policy apply, as indicated in our Privacy Policy and Terms of Service.

    • variants
      array[object]

        example

        Response

        Body

        object | application/json
        • data

        • meta
          object

          Response metadata.

        example

        Delete a Product

        DELETE /catalog/products/{product_id}

        Request

        Deletes a Product.

        Authentication

        • X-Auth-Token in header - required

        Parameters

        • store_hash in path - string
        • Accept in header with default of application/json - string - required

          The MIME type of the response body.

        • product_id in path - integer - required

          The ID of the Product to which the resource belongs.

        example

        Response

        Did you find what you were looking for?