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

# Update Product

> Updates an existing product.



## OpenAPI

````yaml /openapi/api-v1-native.yml patch /products/{id}
openapi: 3.1.0
info:
  title: Whop API
  description: >-
    Hand-written V1 endpoints. Merged into the GraphqlRestProxy-generated schema
    at build time.
  version: v1
servers:
  - url: https://{defaultHost}
    variables:
      defaultHost:
        default: api.whop.com/api/v1
security: []
paths:
  /products/{id}:
    parameters:
      - $ref: '#/components/parameters/ApiVersionDate'
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The unique identifier of the product.
    patch:
      tags:
        - Products
      summary: Update Product
      description: Updates an existing product.
      operationId: updateProduct
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: The display name of the product.
                visibility:
                  type: string
                  description: Whether the product is visible to customers.
                headline:
                  type:
                    - string
                    - 'null'
                  description: A short marketing headline for the product page.
                description:
                  type:
                    - string
                    - 'null'
                  description: A written description displayed on the product page.
                metadata:
                  type:
                    - object
                    - 'null'
                  description: Custom key-value pairs to store on the product.
        required: true
      responses:
        '200':
          description: product updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '401':
          $ref: '#/components/responses/Unauthorized'
          description: missing or invalid authentication
        '404':
          $ref: '#/components/responses/NotFound'
          description: product not found
      security:
        - bearerAuth:
            - product:update
components:
  parameters:
    ApiVersionDate:
      name: Api-Version-Date
      in: header
      required: false
      schema:
        type: string
        format: date
        example: '2026-06-20'
      description: >-
        Pins the request to a dated API version. When omitted, the request uses
        the original (2025-01-01) request/response shapes, so existing
        unversioned callers are never broken. Generated SDKs always send the
        latest version they were built against. An unrecognized value is
        rejected with a 400. The schemas documented here always describe the
        latest version.
  schemas:
    Product:
      type: object
      properties:
        id:
          type: string
          description: Product ID, prefixed `prod_`.
        created_at:
          type: string
          description: When the product was created, as an ISO 8601 timestamp.
        updated_at:
          type: string
          description: When the product was last updated, as an ISO 8601 timestamp.
        title:
          type:
            - string
            - 'null'
          description: Product display name shown to customers.
        visibility:
          type:
            - string
            - 'null'
          description: Whether the product is publicly visible, hidden, or archived.
        headline:
          type:
            - string
            - 'null'
          description: Short marketing headline displayed on product page.
        verified:
          type: boolean
          description: Whether the product has been verified by Whop.
        member_count:
          type: number
          description: >-
            Active memberships for this product; 0 if public member counts are
            disabled.
        route:
          type:
            - string
            - 'null'
          description: URL slug for the product's public link.
        published_reviews_count:
          type: number
          description: Published customer reviews for this product.
        external_identifier:
          type:
            - string
            - 'null'
          description: External identifier stored on the product for your own reference.
        metadata:
          type:
            - object
            - 'null'
          description: Custom key-value pairs stored on the product.
        description:
          type:
            - string
            - 'null'
          description: Written description displayed on product page.
        custom_cta:
          type:
            - string
            - 'null'
          description: Call-to-action button label shown on the product purchase page.
        custom_cta_url:
          type:
            - string
            - 'null'
          description: URL the call-to-action button links to instead of checkout.
        custom_statement_descriptor:
          type:
            - string
            - 'null'
          description: Custom text label on customer's bank statement.
        global_affiliate_percentage:
          type:
            - number
            - 'null'
          description: >-
            Commission rate affiliates earn through the global affiliate
            program.
        global_affiliate_status:
          type:
            - string
            - 'null'
          description: Enrollment status in the global affiliate program.
        member_affiliate_percentage:
          type:
            - number
            - 'null'
          description: Commission rate members earn through the member affiliate program.
        member_affiliate_status:
          type:
            - string
            - 'null'
          description: Enrollment status in the member affiliate program.
        gallery_images:
          type: array
          description: Gallery images for this product.
        product_tax_code:
          type:
            - object
            - 'null'
          description: >-
            Tax classification code for this product, or `null` if no tax code
            is set.
        owner_user:
          type:
            - object
            - 'null'
          description: User who owns the account selling this product.
        company:
          type:
            - object
            - 'null'
          description: Account that sells this product.
      required:
        - id
        - created_at
        - updated_at
        - title
        - visibility
        - headline
        - verified
        - member_count
        - route
        - published_reviews_count
        - external_identifier
        - metadata
        - description
        - custom_cta
        - custom_cta_url
        - custom_statement_descriptor
        - global_affiliate_percentage
        - global_affiliate_status
        - member_affiliate_percentage
        - member_affiliate_status
        - gallery_images
        - product_tax_code
        - owner_user
        - company
    V1ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              description: Machine-readable error code.
            message:
              type: string
              description: Human-readable error message.
          required:
            - type
            - message
      required:
        - error
  responses:
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V1ErrorResponse'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V1ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: auth-scheme
      description: >-
        An account API key, account scoped JWT, app API key, or user OAuth
        token.

````