> ## 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.

# Duplicate experience

> Duplicates an existing experience. The name will be copied, unless provided. The new experience will be attached to the same products as the original experience.
If duplicating a Forum or Chat experience, the new experience will have the same settings as the original experience, e.g. who can post, who can comment, etc.
No content, e.g. posts, messages, lessons from within the original experience will be copied.


Required permissions:
 - `experience:create`



## OpenAPI

````yaml https://app.stainless.com/api/spec/documented/whopsdk/openapi.documented.yml post /experiences/{id}/duplicate
openapi: 3.1.0
info:
  title: Whop API
  description: >-
    The Whop REST API. Please see
    https://docs.whop.com/developer/api/getting-started for more details.
  termsOfService: https://whop.com/tos-developer-api/
  version: 1.0.0
servers:
  - url: https://api.whop.com/api/v1
    description: Production Whop API
security: []
tags:
  - name: Products
    description: Products
  - name: Plans
    description: Plans
  - name: Payments
    description: Payments
  - name: Refunds
    description: Refunds
  - name: Disputes
    description: Disputes
  - name: Dispute alerts
    description: Dispute alerts
  - name: Resolution center cases
    description: Resolution center cases
  - name: Checkout configurations
    description: Checkout configurations
  - name: Setup intents
    description: Setup intents
  - name: Payment methods
    description: Payment methods
  - name: Invoices
    description: Invoices
  - name: Promo codes
    description: Promo codes
  - name: Card transactions
    description: Card transactions
  - name: Ledger accounts
    description: Ledger accounts
  - name: Transfers
    description: Transfers
  - name: Withdrawals
    description: Withdrawals
  - name: Payout methods
    description: Payout methods
  - name: Verifications
    description: Verifications
  - name: Payout accounts
    description: Payout accounts
  - name: Topups
    description: Topups
  - name: Users
    description: Users
  - name: Companies
    description: Companies
  - name: Authorized users
    description: Authorized users
  - name: Fee markups
    description: Fee markups
  - name: Members
    description: Members
  - name: Memberships
    description: Memberships
  - name: Leads
    description: Leads
  - name: Entries
    description: Entries
  - name: Shipments
    description: Shipments
  - name: Reviews
    description: Reviews
  - name: Company token transactions
    description: Company token transactions
  - name: Affiliates
    description: Affiliates
  - name: Experiences
    description: Experiences
  - name: Forums
    description: Forums
  - name: Forum posts
    description: Forum posts
  - name: Chat channels
    description: Chat channels
  - name: Support channels
    description: Support channels
  - name: Messages
    description: Messages
  - name: Reactions
    description: Reactions
  - name: Dm members
    description: Dm members
  - name: Dm channels
    description: Dm channels
  - name: Notifications
    description: Notifications
  - name: Courses
    description: Courses
  - name: Course chapters
    description: Course chapters
  - name: Course lessons
    description: Course lessons
  - name: Course students
    description: Course students
  - name: Course lesson interactions
    description: Course lesson interactions
  - name: Apps
    description: Apps
  - name: Webhooks
    description: Webhooks
  - name: App builds
    description: App builds
  - name: Access tokens
    description: Access tokens
  - name: Account links
    description: Account links
  - name: Files
    description: Files
  - name: Ai chats
    description: Ai chats
  - name: Bounties
    description: Bounties
  - name: Stats
    description: Stats
  - name: Ad campaigns
    description: Ad campaigns
  - name: Ad groups
    description: Ad groups
  - name: Ads
    description: Ads
  - name: Conversions
    description: Conversions
paths:
  /experiences/{id}/duplicate:
    post:
      tags:
        - Experiences
      summary: Duplicate experience
      description: >-
        Duplicates an existing experience. The name will be copied, unless
        provided. The new experience will be attached to the same products as
        the original experience.

        If duplicating a Forum or Chat experience, the new experience will have
        the same settings as the original experience, e.g. who can post, who can
        comment, etc.

        No content, e.g. posts, messages, lessons from within the original
        experience will be copied.



        Required permissions:
         - `experience:create`
      operationId: duplicateExperience
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the experience to duplicate.
          schema:
            type: string
            example: exp_xxxxxxxxxxxxxx
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type:
                    - string
                    - 'null'
                  description: >-
                    The display name for the duplicated experience. Defaults to
                    the original experience's name.
              required: []
              description: Parameters for DuplicateExperience
      responses:
        '200':
          description: A successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Experience'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: invalid_request_error
                  code: parameter_missing
                  message: 'Missing required parameter: amount.'
                  param: amount
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: unauthorized
                  message: Invalid or missing API key
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: forbidden
                  message: You do not have permission to access this resource
        '404':
          description: Not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: not_found
                  message: Resource not found
        '422':
          description: Verification required
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error: null
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: internal_server_error
                  message: An unexpected error occurred
      security:
        - bearerAuth:
            - experience:create
      x-codeSamples:
        - lang: JavaScript
          source: >-
            import Whop from '@whop/sdk';


            const client = new Whop({
              apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
            });


            const experience = await
            client.experiences.duplicate('exp_xxxxxxxxxxxxxx');


            console.log(experience.id);
        - lang: Python
          source: |-
            import os
            from whop_sdk import Whop

            client = Whop(
                api_key=os.environ.get("WHOP_API_KEY"),  # This is the default and can be omitted
            )
            experience = client.experiences.duplicate(
                id="exp_xxxxxxxxxxxxxx",
            )
            print(experience.id)
        - lang: Ruby
          source: |-
            require "whop_sdk"

            whop = WhopSDK::Client.new(api_key: "My API Key")

            experience = whop.experiences.duplicate("exp_xxxxxxxxxxxxxx")

            puts(experience)
components:
  schemas:
    Experience:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the experience.
          example: exp_xxxxxxxxxxxxxx
        name:
          type: string
          description: >-
            The display name of this experience shown to users in the product
            navigation. Maximum 255 characters.
          example: Trading Signals Chat
        order:
          type:
            - string
            - 'null'
          description: >-
            The sort position of this experience within its section. Lower
            values appear first. Null if no position has been set.
          example: '123.45'
        is_public:
          type: boolean
          description: >-
            Whether this experience is publicly visible to all users, including
            those without a membership.
        created_at:
          type: string
          format: date-time
          description: The datetime the experience was created.
          example: '2023-12-01T05:00:00.401Z'
        app:
          type: object
          properties:
            id:
              type: string
              description: The unique identifier for the app.
              example: app_xxxxxxxxxxxxxx
            name:
              type: string
              description: >-
                The display name of this app shown on the app store and in
                experience navigation. Maximum 30 characters.
              example: Courses
            icon:
              type:
                - object
                - 'null'
              properties:
                url:
                  type:
                    - string
                    - 'null'
                  description: >-
                    A pre-optimized URL for rendering this attachment on the
                    client. This should be used for displaying attachments in
                    apps.
                  example: https://media.whop.com/abc123/optimized.jpg
              required:
                - url
              description: >-
                The icon image for this app, displayed on the app store, product
                pages, checkout, and as the default icon for experiences using
                this app.
          required:
            - id
            - name
            - icon
          description: >-
            The app that powers this experience, defining its interface and
            behavior.
        image:
          type:
            - object
            - 'null'
          properties:
            url:
              type:
                - string
                - 'null'
              description: >-
                A pre-optimized URL for rendering this attachment on the client.
                This should be used for displaying attachments in apps.
              example: https://media.whop.com/abc123/optimized.jpg
          required:
            - url
          description: >-
            The custom logo image for this experience. Null if no custom logo
            has been uploaded.
        company:
          type: object
          properties:
            id:
              type: string
              description: The unique identifier for the company.
              example: biz_xxxxxxxxxxxxxx
            title:
              type: string
              description: The display name of the company shown to customers.
              example: Pickaxe
            route:
              type: string
              description: >-
                The URL slug for the company's store page (e.g., 'pickaxe' in
                whop.com/pickaxe).
              example: pickaxe
          required:
            - id
            - title
            - route
          description: The company that owns this experience.
        products:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: The unique identifier for the product.
                example: prod_xxxxxxxxxxxxx
              route:
                type: string
                description: >-
                  The URL slug used in the product's public link (e.g.,
                  'my-product' in whop.com/company/my-product).
                example: pickaxe-analytics
              title:
                type: string
                description: >-
                  The display name of the product shown to customers on the
                  product page and in search results.
                example: Pickaxe Analytics
            required:
              - id
              - route
              - title
            description: >-
              A product is a digital good or service sold on Whop. Products
              contain plans for pricing and experiences for content delivery.
          description: >-
            The list of products this experience is attached to, which
            determines which customers have access. Empty if the experience is
            only visible to authorized company team members.
      required:
        - id
        - name
        - order
        - is_public
        - created_at
        - app
        - image
        - company
        - products
      description: >-
        An experience is a feature or content module within a product, such as a
        chat, course, or custom app.
  securitySchemes:
    bearerAuth:
      type: http
      description: >-
        A company API key, company scoped JWT, app API key, or user OAuth token.
        You must prepend your key/token with the word 'Bearer', which will look
        like `Bearer ***************************`
      scheme: bearer
      bearerFormat: auth-scheme

````