---
title: "Update Product"
method: PUT
path: "/v1/products/{productId}"
tags: ["Products"]
---

# Update Product

`PUT /v1/products/{productId}`

## Request

- Base URL: `https://api.configcat.com`
- URL: `https://api.configcat.com/v1/products/{productId}`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/configcat/apis/configcat-public-management-api/docs/v1/products/:productId/put.ts> (a function with typed inputs; its response is checked against the schema)

This endpoint updates a Product identified by the `productId` parameter.

## Path parameters

- `productId` string, uuid, required

## Request body

- UpdateProductRequest
  - `name` string, nullable: The name of the Product.
  - `description` string, nullable: The description of the Product.
  - `order` integer, nullable: The order of the Product represented on the ConfigCat Dashboard. Determined from an ascending sequence of integers.

## Response `200`

- ProductModel: Details of the Product.
  - `organization` OrganizationModel, required: Details of the Organization.
    - `organizationId` string, uuid, required: Identifier of the Organization.
    - `name` string, required: Name of the Organization.
  - `productId` string, uuid, required: Identifier of the Product.
  - `name` string, required: Name of the Product.
  - `description` string, nullable, required: Description of the Product.
  - `order` integer, required: The order of the Product represented on the ConfigCat Dashboard. Determined from an ascending sequence of integers.
  - `reasonRequired` boolean, required: Determines whether a mandatory reason must be given every time when the Feature Flags or Settings within a Product are saved.
  - `approveRequired` boolean, required: Determines whether changes must be approved before they are applied within a Product.

## Other responses

- `400`: Bad request.
- `404`: Not found.
- `429`: Too many requests. In case of the request rate exceeds the rate limits.

## Changes

- **2026-06-08** `fc2e575e2bd3`: 1 info
  - added the required property `approveRequired` to the response with the `200` status
- **2025-10-09** `8b8a102e5ed1`: 1 info
  - the response property `description` became required for the status `200`
- **2025-05-16** `2949501eef38`: 7 info
  - the response property `name` became required for the status `200`
  - the response property `order` became required for the status `200`
  - the response property `organization` became required for the status `200`
  - the response property `organization/name` became required for the status `200`
  - …3 more
- **2024-05-18** `f14408c16a8c`: 1 breaking, 4 info
  - removed the media type `application/hal+json` for the response with the status `200`
  - added the new optional request property `order` (media type: application/json)
  - added the new optional request property `order` (media type: text/json)
  - added the new optional request property `order` (media type: application/*+json)
  - …1 more

[Operation history](https://skmtc.dev/configcat/apis/configcat-public-management-api/changes/v1/products/:productId/put.md)

---

[API](https://skmtc.dev/configcat/apis/configcat-public-management-api.md) - [All operations](https://skmtc.dev/configcat/apis/configcat-public-management-api/llms.txt) - [OpenAPI document](https://skmtc.dev/configcat/apis/configcat-public-management-api/revisions/0f143561d265?raw)
