---
title: "Update a product's merchandising"
method: POST
path: "/merchandising/products/{product_id}"
tags: ["Merchandising"]
---

# Update a product's merchandising

`POST /merchandising/products/{product_id}`

## Request

- Base URL: `https://api.whatnot.com/seller-api/rest/v2`
- URL: `https://api.whatnot.com/seller-api/rest/v2/merchandising/products/{product_id}`
- Auth: OAuth 2
  - Authorization code: `https://api.whatnot.com/seller-api/rest/oauth/authorize`
  - Token URL: `https://api.whatnot.com/seller-api/rest/oauth/token`

Set a product's sale format, the shows it appears in, and whether it is reserved for live, in one call. Omitted fields are left unchanged. A buy-it-now product that is not reserved for live is listed on the seller's profile shop. A draft product is published by the first call that sets the sale format, sets reserve_for_live, or adds it to shows. Publishing needs every variant priced, inventory, a description, an image, a value for each required category attribute and, in markets that require them, a dimension profile with dimensions. Anything missing is returned together in errors. Requires write:merchandising.

## Path parameters

- `product_id` string, required

## Request body

- MerchandiseProductRequest: Merchandising changes to apply to a product in a single call. Every field is optional; an omitted field leaves that facet unchanged. The changes are applied together: transaction type first, then show membership, then profile-shop publication.
  - `transaction_type` 'buy_it_now' | 'auction': The sale formats a merchandising call can set.
  - `reserve_for_live` boolean, nullable: Whether the product is held for live shows only. Auctions are always reserved for live, so this is rejected as false when transaction_type is auction in the same request, and ignored for a product that is already an auction. A buy-it-now product is purchasable on the seller's profile shop only when this is not true. When omitted, the product's current choice is kept. A draft buy-it-now product with no choice yet is treated as false when transaction_type is set, which publishes it to the profile shop. Switching to auction records the product as reserved for live, so switching back to buy-it-now keeps it off the profile shop until this is sent as false.
  - `shows` ShowsInput: The requested change to which shows a product appears in.
    - `strategy` 'ADD' | 'REMOVE' | 'REPLACE', required: The public, user-facing values for reconciling a product's shows.
    - `show_ids` string[], required: The shows to add or remove, by show ID. For replace, the product's complete set of shows after the call; an empty list removes it from every show.

## Response `200`

Successful Response

- MerchandiseProductResponse: The outcome of a merchandising call for a product.
  - `product_id` string, required: The product that was merchandised.
  - `transaction_type` 'buy_it_now' | 'auction' | 'giveaway', required: The public, user-facing transaction type values.
  - `reserved_for_live` boolean, required: Whether the product is sold only in live shows. Auctions are always reserved for live. A buy-it-now product that is not reserved for live is listed for sale on the seller's profile shop.

## Other responses

- `403`: The seller is not approved to manage inventory.
- `404`: Product not found.
- `422`: The merchandising change could not be applied. When a product isn't ready to publish, errors lists each field to fix.

---

[API](https://skmtc.dev/whatnot/apis/whatnot-seller-api.md) - [All operations](https://skmtc.dev/whatnot/apis/whatnot-seller-api/llms.txt) - [OpenAPI document](https://skmtc.dev/whatnot/apis/whatnot-seller-api/revisions/e619f15f7ce0?raw)
