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

# Copy Folder

export const MultiRelatedLinks = ({sections = []}) => {
  if (!sections || sections.length === 0) {
    return null;
  }
  return <div className="space-y-8">
      {sections.map((section, index) => <RelatedLinks key={index} title={section.title} items={section.items} />)}
    </div>;
};

export const RelatedLinks = ({title, items = []}) => {
  const getBadgeClass = badge => {
    if (!badge) return "badge-default";
    const badgeType = badge.toLowerCase().replace(/\s+/g, "-");
    return `badge-${badge === "ガイド" ? "guide" : badgeType}`;
  };
  if (!items || items.length === 0) {
    return null;
  }
  return <div className="my-8">
      {}
      <h3 className="text-sm font-bold uppercase tracking-wider mb-4">{title}</h3>

      {}
      <div className="flex flex-col gap-3">
        {items.map((item, index) => <a key={index} href={item.href} className="py-2 px-3 rounded related_link hover:bg-[#f2f2f2] dark:hover:bg-[#111827] flex items-center gap-3 group no-underline hover:no-underline border-b-0">
            {}
            <span className={`px-2 py-1 rounded-full text-xs font-semibold uppercase tracking-wide flex-shrink-0 ${getBadgeClass(item.badge)}`}>
              {item.badge}
            </span>

            {}
            <span className="text-base">{item.label}</span>
          </a>)}
      </div>
    </div>;
};

Creates a copy of a folder within a destination folder.

The original folder will not be changed.

To copy a folder in Box you will need to provide our API with the `id` of the
`parent` folder that you would like to copy the folder into.

<CodeGroup>
  ```sh cURL theme={null}
  curl -i -X POST "https://api.box.com/2.0/folders/4353455/copy" \
       -H "authorization: Bearer <ACCESS_TOKEN>" \
       -H "content-type: application/json" \
       -d '{
         "parent": {
           "id": "345345"
         }
       }'
  ```

  ```typescript Node/TypeScript v10 theme={null}
  await client.folders.copyFolder(folderOrigin.id, {
    parent: { id: '0' } satisfies CopyFolderRequestBodyParentField,
    name: copiedFolderName,
  } satisfies CopyFolderRequestBody);
  ```

  ```python Python v10 theme={null}
  client.folders.copy_folder(
      folder_origin.id, CopyFolderParent(id="0"), name=copied_folder_name
  )
  ```

  ```cs .NET v10 theme={null}
  await client.Folders.CopyFolderAsync(folderId: folderOrigin.Id, requestBody: new CopyFolderRequestBody(parent: new CopyFolderRequestBodyParentField(id: "0")) { Name = copiedFolderName });
  ```

  ```swift Swift v10 theme={null}
  try await client.folders.copyFolder(folderId: folderOrigin.id, requestBody: CopyFolderRequestBody(parent: CopyFolderRequestBodyParentField(id: "0"), name: copiedFolderName))
  ```

  ```java Java v10 theme={null}
  client.getFolders().copyFolder(folderOrigin.getId(), new CopyFolderRequestBody.Builder(new CopyFolderRequestBodyParentField("0")).name(copiedFolderName).build())
  ```

  ```java Java v5 theme={null}
  BoxFolder folder = new BoxFolder(api, "id1");
  BoxFolder destination = new BoxFolder(api, "id2");
  folder.copy(destination);
  ```

  ```python Python v4 theme={null}
  folder_id = '22222'
  destination_folder_id = '44444'

  folder_to_copy = client.folder(folder_id)
  destination_folder = client.folder(destination_folder_id)

  folder_copy = folder_to_copy.copy(parent_folder=destination_folder)
  print(f'Folder "{folder_copy.name}" has been copied into folder "{folder_copy.parent.name}"')
  ```

  ```cs .NET v6 theme={null}
  // Copy folder 11111 into folder 22222
  var requestParams = new BoxFolderRequest()
  {
      Id = "11111",
      Parent = new BoxRequestEntity()
      {
          Id = "22222"
      }
  };
  BoxFolder folderCopy = await client.FoldersManager.CopyAsync(requestParams);
  ```

  ```javascript Node v4 theme={null}
  client.folders.copy('11111', '22222')
      .then(folderCopy => {
         /* folderCopy -> {
              type: 'folder',
              id: '1234567',
              sequence_id: '0',
              etag: '0',
              name: 'Pictures from 2017',
              created_at: '2012-12-12T10:53:43-08:00',
              modified_at: '2012-12-12T11:15:04-08:00',
              description: 'Some pictures I took',
              size: 629644,
              path_collection: 
              { total_count: 1,
                  entries: 
                  [ { type: 'folder',
                      id: '0',
                      sequence_id: null,
                      etag: null,
                      name: 'All Files' },
                    { type: 'folder',
                      id: '22222',
                      sequence_id: '3',
                      etag: '3',
                      name: 'Archives' } ] },
              created_by: 
              { type: 'user',
                  id: '22222',
                  name: 'Example User'
                  login: 'user@example.com' },
              modified_by: 
              { type: 'user',
                  id: '22222',
                  name: 'Example User',
                  login: 'user@example.com' },
              owned_by: 
              { type: 'user',
                  id: '22222',
                  name: 'Example User',
                  login: 'user@example.com' },
              shared_link: null,
              parent: 
              { type: 'folder',
                  id: '22222',
                  sequence_id: '3',
                  etag: '3',
                  name: 'Archives' },
              item_status: 'active',
              item_collection: 
              { total_count: 1,
                  entries: 
                  [ { type: 'file',
                      id: '44444',
                      sequence_id: '0',
                      etag: '0',
                      sha1: '134b65991ed521fcfe4724b7d814ab8ded5185dc',
                      name: 'tigers.jpeg' } ],
                  offset: 0,
                  limit: 100 } }
          */
      });
  ```
</CodeGroup>

Optionally, you can provide a different name for the new folder.

<Note>
  **Name restrictions**

  There are some restrictions to the folder name. Names containing non-printable
  ASCII characters, forward and backward slashes (`/`, `\`), as well as names
  with trailing spaces are prohibited.

  Additionally, the names `.` and `..` are reserved names and therefore
  also prohibited.
</Note>

## Asynchronous copying

If the folder being copied contains up to 500 items the copy will happen
synchronously with the API call. The call will not return until the copy
operation has completed.

If the folder contains more than 500 items the copy operation will be run
asynchronously and the API call will return directly yet before the copy
operation has completed. We currently have no API to check when a copy operation
has finished.

## Folder locking

During this operation, part of the file tree will be locked, mainly the source
folder and all of its descendants, as well as the destination folder.

For the duration of the operation, no other move, copy, delete, or restore
operation can performed on any of the locked folders. Most importantly, this
means that the same folder can not be copied to two different parts of the
folder tree at the same time.

## Metadata

If the destination folder has a metadata cascade policy attached to any of the
parent folders a metadata cascade operation will be kicked off asynchronously.

We currently have no API to check when this operation has finished.

<RelatedLinks
  title="RELATED APIS"
  items={[
{ label: translate("Copy folder"), href: "/reference/post-folders-id-copy", badge: "POST" }
]}
/>

<RelatedLinks
  title="RELATED GUIDES"
  items={[
{ label: translate("Create Folder"), href: "/guides/folders/single/create", badge: "GUIDE" },
{ label: translate("Delete Folder"), href: "/guides/folders/single/delete", badge: "GUIDE" }
]}
/>
