API Docs

Copy Record

Create a copy of an existing record while preserving specific data elements.

Copy a Record

To create a copy of an existing record while maintaining specific elements, use the copyTodo mutation:

mutation CopyTodo {
  copyTodo(
    input: {
      title: "new todo"
      todoId: "todo-id"
      todoListId: "todo-list-id"
      options: [
        DESCRIPTION
        DUE_DATE
        CHECKLISTS
        ASSIGNEES
        TAGS
        CUSTOM_FIELDS
      ]
    }
  ) {
    success
  }
}

Required Headers

x-bloo-token-id: "your-token-id"
x-bloo-token-secret: "your-token-secret" 
x-bloo-project-id: "project-id-or-slug"
x-bloo-company-id: "company-id-or-slug"

Input Parameters

FieldTypeRequiredDescription
titleStringYesNew title for the copied record
todoIdStringYesID of the record to copy
todoListIdStringYesID of the list to create the copy in
optionsArrayYesData elements to copy from original record

Copy Options

The options array accepts these values:

OptionDescription
DESCRIPTIONCopies the record's description
DUE_DATECopies the due date and timezone
CHECKLISTSCopies all checklists and their items
ASSIGNEESCopies all assigned users
TAGSCopies all associated tags
CUSTOM_FIELDSCopies all custom field values

Example Response

{
  "data": {
    "copyTodo": {
      "success": true
    }
  }
}
Positioning Copies
The copied record will be placed at the bottom of the target list by default. To control positioning, use the move record mutation.
Required Permissions
You need Edit permissions on both the source and target lists to copy records. Failed copies will return a FORBIDDEN error code.

Error Handling

Common error codes for this operation:

  • BAD_USER_INPUT: Invalid todoId or todoListId
  • FORBIDDEN: Insufficient permissions
  • GRAPHQL_VALIDATION_FAILED: Missing required fields

See Error Codes for complete reference.