> This page is for Developer.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.bigcommerce.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.bigcommerce.com/_mcp/server.

# Lab - Working with Products

Plan: Developer Foundations

Lesson 6 of 21 · 45 min

This lab activity will give you a chance to practice working with products via the Catalog API. Each step will walk you through how to use all of the endpoints covered in the previous lesson.

### Prerequisites

* BigCommerce store (sandbox or live)
* Basic knowledge of APIs
* REST client (Postman)
* Completion of Catalog API Lab 1

### **In this lab, you will:**

* Create a simple product
* Send a GET request to view a list of products in your store
* Send a GET request to view all products channel assignments
* Use include to return variant and image subresources in the response body
* Return the first 5 products in a store, including variant and image information
* Return the next 5 products (6-10)
* Use name=X filter to find a product by name
* Use include\_fields to return only product names, prices, skus, and ids
* Use exclude\_fields to exclude the product descriptions and categories from the response
* Combine multiple parameters in a single request
* Change (PUT) a product's price, description and weight
* DELETE a single product by ID

## Create a Simple Product

1. **Open** Postman
2. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products
```

3. **Find** a product with the same category id to which your new product will be added

![Finding a category ID](/_fern-img/c574270ad21ebcff23efc9a2f34f9ee8040bc4eb226dedc688f1596643369b57.webp)

> **Info**
>
> The [four required fields](/developer/api-reference/rest/admin/catalog/products) for a product are name, price, weight, and type.

4. **Copy** and **paste** the code below into the Body section of Postman

   a. Under the URL field, **click** Body

```json showLineNumbers={false}
{
  "name": "Shirt",
  "price": 10,
  "categories": [{id}],
  "weight": 4,
  "type": "physical"
}
```

5. **Edit** the request body

   a. Replace `{id}` with the category id

![Editing the request body with category ID](/_fern-img/09d2e294aa649a4dcbf7a168d59fe8ac23e7ae263b89c5b8aa39250b6cea2a29.webp)

6. **Select** POST next to the request url
7. **Click** the Send button
8. **Observe** response and the product created in the store
9. **Copy** the product ID for next steps

> **Info**
>
> If you are in MSF, creating the product isn't enough to see it on the storefront, you also need a channel assignment.

> **Info**
>
> There are a number of ways to gather a category's ID. The video below walks you through identifying a category's ID from the URL used to access the Edit a Category page in the control panel.
>
> Alternatively, you can send a **GET** request to the categories endpoint to retrieve a category ID and then skip to Step 2:
>
> **`https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/categories?include_fields=name`**

## GET a List of Products in Your Store

1. **Open** Postman
2. **Click** the No Environment dropdown in the upper-right
3. **Select** the environment you created in the previous lab; make sure you are using the headers from the previous lab as well
4. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products
```

> **Info**
>
> If you created your environment correctly in the previous lab, `{{store_hash}}` will use your store's store hash automatically.

5. **Select** GET next to the request url
6. **Click** the Send button
7. **Observe** response

## GET a List of Product's Channel Assignments

This step is optional. If your store is not set up for multi-channels, the response will return a list of products with a channel ID of 1.

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products/channel-assignments
```

2. **Select** GET next to the request url
3. **Click** the Send button
4. **Observe** response

## GET a Variant and Image Sub-Resources Using "Include"

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products?include=variants,images
```

2. **Select** GET next to the request url (if not already selected)
3. **Click** the Send button
4. **Observe** response

> **Info**
>
> In the response section of Postman, you should now see JSON from the response body including the product, variant, and image information for up to 50 products.

## GET the First 5 Products and Their Variant and Image Information

> **Info**
>
> If your store has more than 50 products, you can use limit and page parameters in the request URL to return up to 250 products at a time and paginate through them.

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products?name={{productName}}
```

2. **Select** GET next to the request url (if not already selected)
3. **Click** the Send button
4. **Observe** response

### Use Pagination to GET the Next 5 Products

5. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products?include=variants,images&limit=5&page=2
```

6. **Select** GET next to the request url (if not already selected)
7. **Click** the Send button
8. **Observe** response

> **Info**
>
> Using the BigCommerce V3 API, you can see how many products are returned per page, which page is being returned, and the total number of pages by observing the `meta` object at the end of the response body.

## Use Name=X Filter to Find a Product By Name

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products?name=
```

2. **Enter** a valid product name in the Params tab
3. **Select** GET next to the request url (if not already selected)
4. **Click** the Send button
5. **Observe** response

## Use Filters to Return Only Product Names, Prices, SKUs, and IDs

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products?include_fields=sku,name,price
```

2. **Select** GET next to the request url (if not already selected)
3. **Click** the Send button
4. **Observe** response

## Use Filters to Exclude the Product Descriptions and Categories from the Response

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products?exclude_fields=description,categories
```

2. **Select** GET next to the request url (if not already selected)
3. **Click** the Send button
4. **Observe** response

## Combine Multiple Parameters in a Single Request

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products?exclude_fields=description,categories&include=images&price:max=100&limit=3&page=2
```

2. **Select** GET next to the request url (if not already selected)
3. **Click** the Send button
4. **Observe** response

> **Info**
>
> The request above combines `exclude_fields`, `include`, `price:max=X`, `limit=Y`, `page=Z` parameters in a single request.

## Change a Product's Price, Description, and Weight

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products
```

2. **Select** GET next to the request url (if not already selected)
3. **Click** the Send button
4. **Identify** and **copy** the Product ID of a product to modify
5. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products/:product_id
```

6. **Enter** a valid ID for `product_id` in the Params tab
7. **Copy** and **paste** the code below into the Body section of Postman

```json showLineNumbers={false}
{
    "price": 10.25,
    "description": "<h4>Great T-shirt</h4>The best t-shirt ever.",
    "weight": 1.20
}
```

8. **Select** PUT next to the request url
9. **Click** the Send button
10. **Observe** the changes in the response

## Delete a Single Product By ID

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products/:product_id
```

2. **Enter** a valid ID for `product_id` in the Params tab
3. **Select** DELETE next to the request url
4. **Click** the Send button
5. **Observe** response

## Get a Product's Category Assignments

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products/category-assignments?product_id:in=
```

2. **Enter** a valid product ID in the Params tab
3. **Select** GET next to the request url (if not already selected)
4. **Click** the Send button
5. **Observe** response

## Delete a Product's Category Assignment

1. **Copy** and **paste** the request below into Postman

```http showLineNumbers={false}
https://api.bigcommerce.com/stores/{{store_hash}}/v3/catalog/products/category-assignments?product_id:in=&category_id:in=
```

2. **Enter** valid IDs for `product_id` and `category_id` in the Params tab
3. **Select** DELETE next to the request url
4. **Click** the Send button
5. **Observe** response