Create a complete copy of an existing project with configurable options for what to include.


Copy a Project

The copy project mutation allows you to duplicate an existing project within the same company or to a different company. This is useful for creating project templates, setting up similar projects, or moving projects between companies. The copy operation runs asynchronously to handle large projects efficiently.

Basic Example

mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "New Project Copy"
      options: {
        todos: true
        todoLists: true
        people: true
      }
    }
  )
}

Advanced Example

mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "Q2 Marketing Campaign"
      description: "Copy of Q1 campaign with updated timeline"
      imageURL: "https://example.com/campaign-logo.png"
      companyId: "comp_789xyz"
      options: {
        assignees: true
        automations: true
        checklists: true
        customFields: true
        discussions: false
        discussionComments: false
        dueDates: true
        files: true
        forms: true
        people: true
        projectUserRoles: true
        statusUpdates: false
        statusUpdateComments: false
        tags: true
        todoActions: true
        todoComments: false
        todoLists: true
        todos: true
      }
    }
  )
}

Input Parameters

CopyProjectInput

Parameter Type Required Description
projectId String! ✅ Yes The ID of the project to be copied
name String! ✅ Yes The name for the new project (max 50 characters)
description String No The description for the new project (max 500 characters)
imageURL String No The image URL for the new project
companyId String No The ID of the company where the new project should be created. If not provided, uses the source project's company
options CopyProjectOptionsInput! ✅ Yes Configuration for what elements to copy

CopyProjectOptionsInput

Parameter Type Required Description
assignees Boolean No Copy task assignees (requires people: true)
automations Boolean No Copy project automations and workflows
checklists Boolean No Copy task checklists
customFields Boolean No Copy custom field definitions and values
discussions Boolean No Copy project discussions
discussionComments Boolean No Copy comments on discussions (requires discussions: true)
dueDates Boolean No Copy due dates on tasks
files Boolean No Copy file attachments
forms Boolean No Copy project forms
people Boolean No Copy project members
projectUserRoles Boolean No Copy user roles and permissions (requires people: true)
statusUpdates Boolean No Copy project status updates
statusUpdateComments Boolean No Copy comments on status updates (requires statusUpdates: true)
tags Boolean No Copy project tags
todoActions Boolean No Copy task actions/subtasks
todoComments Boolean No Copy task comments
todoLists Boolean No Copy task lists/sections
todos Boolean No Copy tasks
coverConfig Boolean No Copy todo cover image configuration

Response

The mutation returns a Boolean value:

  • true - The copy job has been successfully queued
  • false - The copy job could not be started

Checking Copy Status

Since copying is asynchronous, use the copyProjectStatus query to check progress:

Copy Status Fields

Field Type Description
queuePosition Int Position in the copy queue
totalQueues Int Total number of items in the queue
isActive Boolean Whether the copy operation is currently active
oldProject Project The source project being copied
newProjectName String Name of the new project being created
isTemplate Boolean Whether this is copying as a template
oldCompany Company Source company
newCompany Company Target company
query CheckCopyStatus {
  copyProjectStatus {
    queuePosition
    totalQueues
    isActive
    oldProject {
      id
      name
    }
    newProjectName
    isTemplate
    oldCompany {
      id
      name
    }
    newCompany {
      id
      name
    }
  }
}

Required Permissions

To copy a project, you need appropriate permissions in both the source and target locations:

Scenario Required Permissions
Copy within same company OWNER, ADMIN, or MEMBER role in the source project
Copy to different company OWNER, ADMIN, or MEMBER role in the source project
• Must be a member of the target company

The source project must be active (not archived) to be copied.

Error Responses

Project Not Found

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}

Occurs when the source project doesn't exist or you lack access.

Company Not Found

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMPANY_NOT_FOUND"
    }
  }]
}

Occurs when the target company doesn't exist or you lack access.

Project Too Large

{
  "errors": [{
    "message": "Project is too large to copy",
    "extensions": {
      "code": "CREATE_PROJECT_LIMIT"
    }
  }]
}

Occurs when the project has more than 250,000 tasks.

Copy Already In Progress

{
  "errors": [{
    "message": "Oops!"
  }]
}

Occurs when you already have a copy operation in progress.

Important Notes

  • Asynchronous Operation: The mutation queues a background job and returns immediately. Use copyProjectStatus to track progress.
  • One Copy at a Time: Only one copy operation per user can be active at any time.
  • Size Limitations: Projects with more than 250,000 tasks cannot be copied.
  • Logical Dependencies: Some options work best together:
    • assignees works with people: true (assignees won't be copied without people)
    • discussionComments works with discussions: true
    • statusUpdateComments works with statusUpdates: true
    • projectUserRoles works with people: true
  • Name Processing: Project names are trimmed and any URLs are automatically removed.
  • Queue Priority: Enterprise customers receive higher priority in the copy queue.
  • Status Caching: Copy status is cached for 6 hours after completion.

AI Assistant

Responses are generated using AI and may contain mistakes.

How can I help you?

Ask me anything about Blue or this documentation.

Enter to send • Shift+Enter for new line • ⌘I to open