---
title: "Copy Document"
method: POST
path: "/v1/documents/copy"
tags: ["Document Access"]
---

# Copy Document

`POST /v1/documents/copy`

Copies one of the requesting user's existing documents, with the specified title. Requires `title` and `template` (the ID of the document to copy). Optionally, a `parent` folder can be provided. Note that collaborator permissions are not transferred to the copied document.

> 📘
>
> This endpoint can only create a new Lucidchart or Lucidspark document. It cannot modify an existing document's contents.

> 📘 ##### Document Creation Location
>
> When there is no `parent` field on the request, the new document will be created in a default location depending on the authorizing token's scopes.
>
> - If the token authorizing the request uses one of the `document.app` scopes, then the document will be created in an `app-specific folder`.
> - If one of the `document.content` scopes is used, the document will be created in the user's 'My Documents folder'.
> - If both types of scopes are authorized on the token, the `document.content` behavior will take priority and the document will be created in the user's 'My Documents' folder.

## Valid Authentication Methods

**API Key Grants:**
- `DocumentEdit`

**OAuth 2.0 User Token Scopes:**
- `lucidchart.document.content`
- `lucidchart.document.app.folder`
- `lucidspark.document.content`
- `lucidspark.document.app.folder`

## Request body

- object
  - `title` string, required — Title that should be given to the copied document.
  - `template` string, uuid, required — ID of the document to copy.
  - `parent` number — Folder ID for the new document.

## Response `201`

Created with Document resource containing information about the newly copied document.

- Document
  - `documentId` string, uuid, required — Unique ID of the document
  - `title` string, required — Title of the document
  - `editUrl` string, uri, required — Link to edit the document
  - `viewUrl` string, uri, required — Link to view the document
  - `version` integer, required — Most recent version
  - `pageCount` integer, required — Number of pages within the document
  - `canEdit` boolean, required — If requesting user can edit the document
  - `created` string, date-time, required — Date and time of when the document was created
  - `creatorId` integer, required — ID of user who created and owns the document
  - `lastModified` string, date-time, required — Date and time of when the document was last modified
  - `lastModifiedUserId` integer, required — ID of user who most recently modified the document
  - `customAttributes` CustomAttribute[], required — List of any custom attributes belonging to the document. Populated for Enterprise Accounts only.
    - `type` 'singleLineText' | 'multiLineText' | 'singleSelectDropdown' | 'multiSelectDropdown' | 'webLink' | 'numericalRange' | 'hierarchicalDropdown', required — The custom attribute type
    - `name` string — Title of the custom attribute. hierarchicalDropdown attributes do not have names.
    - `value` union — The value assigned to the custom attribute. The type of this value is determined by the Attribute Type.
      - string
      - union[]
        - union
          - DataPair — Object representing a key-value pair of data.
            - `name` string, required — Custom data key
            - `value` string, required — Custom data value
          - string
  - `customTags` string[], required — List of any custom tags assigned to the document
  - `product` 'lucidchart' | 'lucidscale' | 'lucidspark', required — The Lucid Suite product that a document was created in.
  - `status` string, nullable — Current assigned status of the document
  - `classification` string, nullable — Current assigned classification of the document
  - `classificationId` string, uuid, nullable — Current assigned classification ID of the document.
  - `trashed` string, date-time, nullable — If defined, the timestamp when the document was moved to the trash
  - `parent` integer, nullable — ID of the parent folder
  - `repository` Repository
    - `repositoryId` string — the ID of the repository
  - `accountId` integer, nullable, required — ID of Lucid account that owns the document
  - `owner` DocumentOwner
    - `id` number — Id of either the user or the account, depending on the type of the document user resource.
    - `type` string — Specifies if the owner resource is referring to a user or an account. Value will be either "user" or "account".
    - `name` string — Full name of the user that owns this document. This field is excluded if this document is owned by an account.

## Other responses

- `403` — Forbidden. * if the user doesn't have access to or permissions to create within the specified parent folder. * if the user doesn't have permissions to access the specified template to copy from. * if the token authorizing the request has the document.app scope with a specified parent folder that is outside the app folder's folder tree.

---

[API](https://skmtc.net/lucid/apis/lucid-rest-api.md) · [All operations](https://skmtc.net/lucid/apis/lucid-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lucid/lucid-rest-api/revisions/6a32cb9e1aa7/schema)
