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

# Update Product Preferences

`POST /v1/products/{productId}/preferences`

## Request

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

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

## Path parameters

- `productId` string, uuid, required

## Request body

- UpdatePreferencesRequest
  - `reasonRequired` boolean, nullable: Indicates that a mandatory note is required for saving and publishing.
  - `keyGenerationMode` 'camelCase' | 'lowerCase' | 'upperCase' | 'pascalCase' | 'kebabCase': Determines the Feature Flag key generation mode.
  - `showVariationId` boolean, nullable: Indicates whether a variation ID's must be shown on the ConfigCat Dashboard.
  - `mandatorySettingHint` boolean, nullable: Indicates whether Feature flags and Settings must have a hint.
  - `reasonRequiredEnvironments` UpdateReasonRequiredEnvironmentModel[], nullable: List of Environments where mandatory note must be set before saving and publishing.
    - `environmentId` string, uuid: Identifier of the Environment.
    - `reasonRequired` boolean: Indicates that a mandatory note is required in this Environment for saving and publishing.
  - `approveRequired` boolean, nullable: Indicates that a mandatory approval is required before changes are applied.
  - `approveRequiredEnvironments` UpdateApproveRequiredEnvironmentModel[], nullable: List of Environments where mandatory approval must be given before changes are applied.
    - `environmentId` string, uuid: Identifier of the Environment.
    - `approveRequired` boolean: Indicates that a mandatory approval is required in this Environment before changes are applied.

## Response `200`

When the update was successful.

- PreferencesModel
  - `reasonRequired` boolean, required: Indicates that a mandatory note required for saving and publishing.
  - `keyGenerationMode` 'camelCase' | 'lowerCase' | 'upperCase' | 'pascalCase' | 'kebabCase', required: Determines the Feature Flag key generation mode.
  - `showVariationId` boolean, required: Indicates whether a variation ID's must be shown on the ConfigCat Dashboard.
  - `reasonRequiredEnvironments` ReasonRequiredEnvironmentModel[], nullable, required: List of Environments where mandatory note must be set before saving and publishing.
    - `environmentId` string, uuid, required: Identifier of the Environment.
    - `reasonRequired` boolean, required: Indicates that a mandatory note is required in this Environment for saving and publishing.
    - `environmentName` string, nullable, required: Name of the Environment.
  - `mandatorySettingHint` boolean, required: Indicates whether Feature flags and Settings must have a hint.
  - `approveRequired` boolean, required: Indicates that a mandatory approval is required for saving and publishing.
  - `approveRequiredEnvironments` ApproveRequiredEnvironmentModel[], nullable, required: List of Environments where mandatory approval must be given before changes are applied.
    - `environmentId` string, uuid, required: Identifier of the Environment.
    - `approveRequired` boolean, required: Indicates that a mandatory approval is required in this Environment before changes are applied.
    - `environmentName` string, nullable, required: Name of the Environment.

## 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`: 8 info
  - added the new optional request property `approveRequired` (media type: application/json)
  - added the new optional request property `approveRequired` (media type: text/json)
  - added the new optional request property `approveRequired` (media type: application/*+json)
  - added the new optional request property `approveRequiredEnvironments` (media type: application/json)
  - …4 more
- **2025-10-09** `8b8a102e5ed1`: 20 breaking, 12 info
  - added `#/components/schemas/KeyGenerationMode` to the `keyGenerationMode` request property `allOf` list (media type: application/json)
  - added `#/components/schemas/KeyGenerationMode` to the `keyGenerationMode` request property `allOf` list (media type: text/json)
  - added `#/components/schemas/KeyGenerationMode` to the `keyGenerationMode` request property `allOf` list (media type: application/*+json)
  - removed the enum value `camelCase` of the request property `keyGenerationMode` (media type: application/json)
  - …28 more
- **2024-05-18** `f14408c16a8c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/configcat/apis/configcat-public-management-api/changes/v1/products/:productId/preferences/post.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)
