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

# Update Product Status

> Change a product's status to ACTIVE or DRAFT

<Note>
  **V2 Preview** — This endpoint is part of the V2 API preview. Breaking changes may occur.
</Note>

## Overview

Change a product's status without updating any other fields. This is a lightweight way to publish or unpublish a product. Vendor tokens can only update their own products.

If the shop has product approval enabled, setting status to `ACTIVE` may place the product into a `pending` state instead, requiring merchant approval before it goes live.

### Use Cases

* Publish a draft product to the storefront
* Temporarily unpublish a product by switching it to draft
* Quickly toggle product visibility without a full product update

### Required Scope

`products:write`

## Path Parameters

<ParamField path="productId" type="string" required>
  Product ID (Shopify numeric, GID, or MongoDB ObjectId).
</ParamField>

## Request Body

<ParamField body="status" type="string" required>
  The new status. Must be one of `ACTIVE` or `DRAFT`.
</ParamField>

## Response

```json 200 theme={null}
{
  "success": true,
  "data": {
    "_id": "507f1f77bcf86cd799439013",
    "title": "Organic Cotton Tee",
    "status": "active"
  }
}
```

```json 403 theme={null}
{
  "success": false,
  "error": {
    "message": "Updating products is disabled for this vendor",
    "code": "FORBIDDEN"
  }
}
```

```json 404 theme={null}
{
  "success": false,
  "error": {
    "message": "Product not found",
    "code": "PRODUCT_NOT_FOUND"
  }
}
```

## Example

```bash theme={null}
curl -X PATCH "https://staging-api.puppetvendors.com/products/507f1f77bcf86cd799439013/status" \
  -H "x-access-token: YOUR_VENDOR_JWT" \
  -H "Content-Type: application/json" \
  -d '{"status": "ACTIVE"}'
```
