Skip to main content
Copying a Project creates another Project with the same Ontology and settings. You also have the option to copy over the same users, datasets and models (which are not copied over by default). The copy_project() method takes the following parameters, all of which are optional:
  • copy_datasets: when set to True, the Datasets from the original Project are attached to the new Project and new tasks are created from them. To choose how Datasets are handled, pass CopyDatasetOptions instead. See Datasets, Files, and custom metadata in copied Projects.
  • Copy_collaborators: when set to True, the collaborators from the original Project will be copied over with their existing roles.
  • Copy_models: when set to True, the models and their training data from the original Project will be copied over.
The parameters above are set to False by default, which means that they don’t need to be included if a given feature shouldn’t be copied to the new Project. The copy_project() method returns the <project_hash> of the new project.
If collaborators are not copied, reviewer and label mapping settings are not copied over either.

Datasets, Files, and custom metadata in copied Projects

Copying a Project never copies your Files. Every Project, whether it is the original or a copy, uses the same Files in your Folders. Custom metadata (clientMetadata) is stored on each File. This means that custom metadata is shared between the original Project and the copy, whichever option you choose. If you update the custom metadata of a File, both Projects show the change. You never need to update custom metadata in two places. copy_datasets accepts True or a CopyDatasetOptions object. The action field of CopyDatasetOptions decides what happens to Datasets:
  • CopyDatasetAction.ATTACH (default, same as copy_datasets=True): The Datasets of the original Project are attached to the new Project. No new Dataset is created. Both Projects share the same Datasets and the same data units.
  • CopyDatasetAction.CLONE: A new Dataset is created and attached to the new Project. Only the data units you list in datasets_to_data_hashes_map are added to the new Dataset, as new data units. Each new data unit points to the same File as the data unit it was cloned from. You can clone up to 10,000 data units in one copy.
Folder IDs: Projects do not have Folder IDs. A Dataset only has a Folder ID (backing_folder_uuid) if it is a mirrored Dataset. Each File has its own ID (uuid) and the ID of the Folder it is in (parent).
  • With ATTACH, both Projects use the same Dataset, so the Dataset has the same backing_folder_uuid in both Projects.
  • With CLONE, the new Dataset has no backing Folder, so its backing_folder_uuid is None. The Files behind it still sit in their original Folders, and their custom metadata is the same as in the original Project.
If the data in two Projects comes from Files in different Folders, those are different Files. For example, the same image was uploaded twice. Each File has its own custom metadata, so you must update each File separately. To check whether two data units use the same File, compare their backing_item_uuid values.
To keep custom metadata consistent across Projects, import and update custom metadata on Files in Folders. See Import custom metadata.
Copying a Project in the Encord app attaches the original Datasets (ATTACH). To clone data units into a new Dataset, use the SDK.

Copy a Project

The project hash can be found within the URL once a project has been selected:
app.encord.com/projects/view/<project_hash>/summary
app.us.encord.com/projects/view/<project_hash>/summary
The sample code below demonstrates how to copy a Project in the most simple way.
The sample code below demonstrates how to copy a project in a more advanced way.