Magento API add items to cart

Magento 2 API How to add items to cart

In this post, I will show you how to add items to the cart as a customer using Magento 2 API. Follow my examples of simple products, digital downloadable product, and customize product will give you an overview of how it can be done.

Step 1: Generate customer access token

We will add items to the cart on behalf of the customer, so Admin token is not required. Create a new request with this endpoint

POST <host>/rest/V1/integration/customer/token

Payload(body):

{ "username": "string", "password": "string" }
Code language: JSON / JSON with Comments (json)

Response: access token

Step 2: Add items to the cart

Create a new post with this endpoint:

POST <host>/rest/V1/carts/mine/items

Authorization: Bearer token

Enter your customer access token

Add a simple product

A simple product requires a SKU, the quantity, and the quote ID, follow our post to create a quote ID. The following example adds a Push It Messenger Bag (Magento sample product) (SKU: 24-WB04) to the cart.

Payload

{ "cartItem": { "sku": "24-WB04", "qty": 1, "quote_id": "42" } }
Code language: JSON / JSON with Comments (json)

Response

{ "item_id": 139, "sku": "24-WB04", "qty": 1, "name": "Push It Messenger Bag", "price": 45, "product_type": "simple", "quote_id": "42" }
Code language: JSON / JSON with Comments (json)
add simple item using api
Add a digital product

Downloadable items have the same requirements as simple product. The following example adds the downloadable product Solo Power Circuit (SKU: 240-LV07)

Payload

{ "cartItem": { "sku": "240-LV07", "qty": 1, "quote_id": "42" } }
Code language: JSON / JSON with Comments (json)

Response

{ "item_id": 140, "sku": "240-LV07", "qty": 1, "name": "Solo Power Circuit", "price": 14, "product_type": "downloadable", "quote_id": "42", "product_option": { "extension_attributes": { "downloadable_option": { "downloadable_links": [ 4 ] } } } }
Code language: JSON / JSON with Comments (json)
respon item
Add a customize product

What makes the configurable products different from other products is that you have to specify the SKU as well as the set of option_id/option_value pairs.

First, use this endpoint to get information about each combination of color and size. The following sample shows the returned values for size and color for a XS blue Proteus Fitness Jackshirt.

Get the option_id values for the given SKU.

GET <host>/rest/V1/configurable-products/:sku/options/all

Authorization: Bearer token – Admin token

get id value for the given sku

The following sample shows the returned values for size and color for a small blue Proteus Fitness Jackshirt (SKU: MJ12). The option_id values for Size and Color are 145 and 93.

GET <host>/rest/V1/configurable-products/:sku/children

Authorization: Bearer token – Customer token

Response

{ "custom_attributes": [ { "attribute_code": "size", "value": "166" }, { "attribute_code": "color", "value": "49" } ] }
Code language: JSON / JSON with Comments (json)

We now know the values for option_value for size and color are 166 and 49, so we’re ready to add the product to the cart.

POST <host>/rest/V1/carts/mine/items

Payload

{ "cartItem": { "sku": "MJ12", "qty": 1, "quote_id": "42", "product_option": { "extension_attributes": { "configurable_item_options": [ { "option_id": "93", "option_value": 49 }, { "option_id": "145", "option_value": 166 } ] } }, "extension_attributes": {} } }
Code language: JSON / JSON with Comments (json)
post api key using postman

Response

{ "item_id": 141, "sku": "MJ12-XS-Blue", "qty": 1, "name": "Proteus Fitness Jackshirt", "price": 45, "product_type": "configurable", "quote_id": "42", "product_option": { "extension_attributes": { "configurable_item_options": [ { "option_id": "93", "option_value": 50 }, { "option_id": "145", "option_value": 166 } ] } } }
Code language: JSON / JSON with Comments (json)
respone product in postman
Add a bundle product

You have to add individual items to the bundle product by specifying the id defined in the item’s product_links object. The product_links links an item’s SKU and id to the SKU of the bundle product.

In this example, we will use the Sprite Yoga Companion Kit (SKU: 24-WG080), which includes:

  • Statis Ball (55cm, 65cm, 75cm)
  • Foam Yoga brick
  • Yoga Strap (6ft, 8ft, 10ft)
  • Foam Roller

First, we get the bundle product id

GET <host>/rest/V1/bundle-products/24-WG080/options/all

Authorization: Bearer token – Admin token

Response

[ { "option_id": 1, "title": "Sprite Stasis Ball", "required": true, "type": "radio", "position": 1, "sku": "24-WG080", "product_links": [ { "id": "1", "sku": "24-WG081-blue", "option_id": 1, "qty": 1 }, { "id": "2", "sku": "24-WG082-blue", "option_id": 1, "qty": 1 }, { "id": "3", "sku": "24-WG083-blue", "option_id": 1, "qty": 1 } ] }, { "option_id": 2, "title": "Sprite Foam Yoga Brick", "required": true, "type": "radio", "position": 2, "sku": "24-WG080", "product_links": [ { "id": "4", "sku": "24-WG084", "option_id": 2, "qty": 1 } ] }, { "option_id": 3, "title": "Sprite Yoga Strap", "required": true, "type": "radio", "position": 3, "sku": "24-WG080", "product_links": [ { "id": "5", "sku": "24-WG085", "option_id": 3, "qty": 1 }, { "id": "6", "sku": "24-WG086", "option_id": 3, "qty": 1 }, { "id": "7", "sku": "24-WG087", "option_id": 3, "qty": 1 } ] }, { "option_id": 4, "title": "Sprite Foam Roller", "required": true, "type": "radio", "position": 4, "sku": "24-WG080", "product_links": [ { "id": "8", "sku": "24-WG088", "option_id": 4, "qty": 1 } ] } ]
Code language: JSON / JSON with Comments (json)

Then specify the product options that you want to choose. For example:

  • 55 cm Sprite Stasis Ball (id: 1)
  • Sprite Foam Yoga Brick (id: 4)
  • 6 ft Sprite Yoga strap (id: 5)
  • Sprite Foam Roller (id: 8)

Create a new request with this endpoint:

POST /rest/V1/carts/mine/items

Authorization: Bearer token – Customer token

Payload

{ "cartItem": { "sku": "24-WG080", "qty": 1, "quote_id": "4", "product_option": { "extension_attributes": { "bundle_options": [ { "option_id": 1, "option_qty": 1, "option_selections": [1] }, { "option_id": 2, "option_qty": 1, "option_selections": [4] }, { "option_id": 3, "option_qty": 1, "option_selections": [5] }, { "option_id": 4, "option_qty": 1, "option_selections": [8] } ] } } } }
Code language: JSON / JSON with Comments (json)

Response

{ "item_id": 9, "sku": "24-WG080-24-WG084-24-WG088-24-WG082-blue-24-WG086", "qty": 1, "name": "Sprite Yoga Companion Kit", "price": 68, "product_type": "bundle", "quote_id": "4", "product_option": { "extension_attributes": { "bundle_options": [ { "option_id": 1, "option_qty": 1, "option_selections": [ 1 ] }, { "option_id": 2, "option_qty": 1, "option_selections": [ 4 ] }, { "option_id": 3, "option_qty": 1, "option_selections": [ 5 ] }, { "option_id": 4, "option_qty": 1, "option_selections": [ 8 ] } ] } } }
Code language: JSON / JSON with Comments (json)

Step 3: Verify the result

Log in with your customer account and check your cart for all the items you have added.

Above I have shown you how to add every type of item to a shopping cart using Magento 2 API. Hope you successfully generate products. For more guidess, visit our blog or Magento Devdocs.

Magento API add items to cart

Magento 2 API How to add items to cart

Join The Ride

Subscribe to our fortnightly newsletter with stories from our latest adventures and the best travel tips

Table of Contents