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

# Duplicate a project

> Copy a project's configuration into a new project: its settings, every channel with its policies, rules and wordlists, its moderation actions and its review queues. The copy gets its own secret API key. Webhooks, integrations, API keys and content are not copied. Needs the `projects:write` permission and a key that reaches all projects.



## OpenAPI

````yaml post /projects/{id}/duplicate
openapi: 3.1.0
info:
  title: Moderation API
  description: API for automated content moderation
  version: 1.1.0
servers:
  - url: https://api.moderationapi.com/v1
security: []
tags:
  - name: Actions
  - name: Queues
  - name: Webhooks
  - name: Wordlist
  - name: UserReports
  - name: Projects
  - name: Channels
  - name: Voice
    description: Real-time voice moderation over WebSocket.
externalDocs:
  url: https://docs.moderationapi.com
paths:
  /projects/{id}/duplicate:
    post:
      tags:
        - Projects
      summary: Duplicate a project
      description: >-
        Copy a project's configuration into a new project: its settings, every
        channel with its policies, rules and wordlists, its moderation actions
        and its review queues. The copy gets its own secret API key. Webhooks,
        integrations, API keys and content are not copied. Needs the
        `projects:write` permission and a key that reaches all projects.
      operationId: management-projects-duplicate
      parameters:
        - in: path
          name: id
          schema:
            type: string
            description: The ID of the project to copy.
          required: true
          description: The ID of the project to copy.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: >-
                    Name of the copy. Defaults to the original name with
                    "(copy)".
                  type: string
                  minLength: 1
                  maxLength: 75
      responses:
        '200':
          description: Project duplicated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectWithKey'
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.BAD_REQUEST'
        '401':
          description: Authorization not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.UNAUTHORIZED'
        '403':
          description: Insufficient access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.FORBIDDEN'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.NOT_FOUND'
      security:
        - Authorization: []
components:
  schemas:
    ProjectWithKey:
      type: object
      properties:
        id:
          type: string
          description: The ID of the project.
        name:
          type: string
          description: The project's name.
        description:
          description: The project's description.
          type:
            - string
            - 'null'
        domain:
          description: The website or app the project moderates content for.
          type:
            - string
            - 'null'
        context:
          description: >-
            What the platform is and who uses it. AI moderation reads it to
            judge content in context.
          type:
            - string
            - 'null'
        globalFlaggingMode:
          type: string
          enum:
            - DRY_RUN
            - ACTIVE
          description: >-
            `ACTIVE` flags content. `DRY_RUN` evaluates content without flagging
            it, for testing a setup.
        enableRequestLogging:
          type: boolean
          description: Whether moderated content is stored and shown in the dashboard.
        casebookEnabled:
          type: boolean
          description: >-
            Whether decisions made in the review queue are recorded in the
            project's casebook.
        createdAt:
          description: When the project was created.
          type: string
        updatedAt:
          description: When the project was last changed.
          type: string
        secretKey:
          type: string
          description: >-
            A secret API key for the new project. Use it to moderate content in
            this project. It is also shown in the project's settings.
      required:
        - id
        - name
        - description
        - domain
        - context
        - globalFlaggingMode
        - enableRequestLogging
        - casebookEnabled
        - createdAt
        - updatedAt
        - secretKey
      additionalProperties: false
    error.BAD_REQUEST:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Invalid input data
        code:
          type: string
          description: The error code
          example: BAD_REQUEST
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Invalid input data error (400)
      description: The error information
      example:
        code: BAD_REQUEST
        message: Invalid input data
        issues: []
    error.UNAUTHORIZED:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Authorization not provided
        code:
          type: string
          description: The error code
          example: UNAUTHORIZED
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Authorization not provided error (401)
      description: The error information
      example:
        code: UNAUTHORIZED
        message: Authorization not provided
        issues: []
    error.FORBIDDEN:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Insufficient access
        code:
          type: string
          description: The error code
          example: FORBIDDEN
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Insufficient access error (403)
      description: The error information
      example:
        code: FORBIDDEN
        message: Insufficient access
        issues: []
    error.NOT_FOUND:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Not found
        code:
          type: string
          description: The error code
          example: NOT_FOUND
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Not found error (404)
      description: The error information
      example:
        code: NOT_FOUND
        message: Not found
        issues: []
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer

````