---
updatedAt: 2026-04-20T20:26:21.000Z
agentTools:
  projectIndex: https://docs.wistia.com/llms.txt
---

# Copy Folder

This copies a folder (previously called project) and all its media and subfolders asynchronously in a background job.

This method does not copy the folder’s sharing information (i.e. users that could see the old folder will not automatically be able to see the new one).

For the request you can specify the owner of a new folder by passing an optional parameter. The person you specify must be a Manager in the account.

The body of the response will contain an object representing the background job that was created.

## Requires api token with one of the following permissions
```
Read, update & delete anything
```

Tokens with the "Act with a team member's permissions" permission
(`all:delegate_to_contact_permissions` scope) can also be used. Requests
made with such a token are authorized using the permissions of the
contact assigned to the token.


# OpenAPI definition

````json
{
  "openapi": "3.1.1",
  "info": {
    "title": "Data API",
    "description": "Wistia Data API",
    "version": "2026.09.0"
  },
  "servers": [
    {
      "url": "https://api.wistia.com/modern"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Folders"
    }
  ],
  "paths": {
    "/folders/{id}/copy": {
      "post": {
        "summary": "Copy Folder",
        "x-speakeasy-group": "folders",
        "x-speakeasy-name-override": "copy",
        "description": "This copies a folder (previously called project) and all its media and subfolders asynchronously in a background job.\n\nThis method does not copy the folder’s sharing information (i.e. users that could see the old folder will not automatically be able to see the new one).\n\nFor the request you can specify the owner of a new folder by passing an optional parameter. The person you specify must be a Manager in the account.\n\nThe body of the response will contain an object representing the background job that was created.\n\n## Requires api token with one of the following permissions\n```\nRead, update & delete anything\n```\n\nTokens with the \"Act with a team member's permissions\" permission\n(`all:delegate_to_contact_permissions` scope) can also be used. Requests\nmade with such a token are authorized using the permissions of the\ncontact assigned to the token.\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Folder Hashed ID",
            "required": true,
            "schema": {
              "description": "Hashed ID of the folder (e.g., \"4d23503f70\")",
              "type": "string"
            }
          },
          {
            "name": "X-Wistia-API-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "default": "2026-09"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "unevaluatedProperties": false,
                "type": "object",
                "properties": {
                  "adminEmail": {
                    "description": "The email address of the account Manager that will be the owner of the new folder. Defaults to the Account Owner if invalid or omitted.",
                    "type": "string",
                    "examples": [
                      "admin@example.com"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Folder queued to be copied",
            "content": {
              "application/json": {
                "schema": {
                  "unevaluatedProperties": false,
                  "allOf": [
                    {
                      "type": "object",
                      "description": "A background job keeps track of the progress of an asynchronous task, e.g\nbulk archiving media, translating media, etc.\n",
                      "properties": {
                        "id": {
                          "description": "The ID of the background job that's been queued for the request.",
                          "type": "integer"
                        },
                        "hashed_id": {
                          "description": "The unguessable hashed ID of the background job. Prefer this over the numeric ID when polling for status.",
                          "type": "string"
                        },
                        "status": {
                          "description": "The status of the background job that's been queued for the request.",
                          "type": "string",
                          "enum": [
                            "queued",
                            "started",
                            "finished",
                            "failed"
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "hashed_id",
                        "status"
                      ]
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized, invalid or missing token",
            "content": {
              "application/json": {
                "schema": {
                  "unevaluatedProperties": false,
                  "type": "object",
                  "properties": {
                    "code": {
                      "description": "A machine-readable identifier for the specific authorization failure.",
                      "type": "string",
                      "enum": [
                        "unauthorized_credentials",
                        "account_inactive",
                        "unauthorized_scope",
                        "unauthorized_params"
                      ]
                    },
                    "error": {
                      "type": "string",
                      "examples": [
                        "Invalid credentials."
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "unevaluatedProperties": false,
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "examples": [
                        "Folder with ID 'fakeid' not found."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "unevaluatedProperties": false,
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "examples": [
                        "Internal server error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Folders"
        ],
        "x-readme": {
          "code-samples": [
            {
              "name": "Typescript (SDK)",
              "language": "javascript",
              "code": "import { Wistia } from \"@wistia/wistia-api-client\";\n\nconst wistia = new Wistia({\n  bearerAuth: process.env[\"WISTIA_BEARER_AUTH\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await wistia.folders.copy({\n    id: \"<id>\",\n    requestBody: {\n      adminEmail: \"admin@example.com\",\n    },\n  });\n\n  console.log(result);\n}\n\nrun();"
            }
          ]
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "x-readme": {
    "samples-languages": [
      "javascript",
      "shell",
      "node",
      "python",
      "ruby"
    ]
  }
}
````