> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://help.sigmacomputing.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://help.sigmacomputing.com/_mcp/server.

# Duplicate a workbook

POST https://api.sigmacomputing.com/v2/workbooks/{workbookId}/copy
Content-Type: application/json

This endpoint lets you duplicate an existing workbook. The workbook copy can be placed in a different folder from the original workbook, potentially with a different name and description. This is useful for creating workbook templates or backups.

### Usage notes
- The `workbookId` in the URL specifies the original workbook to be copied. Retrieve the **workbookId** by calling the [/v2/workbooks](https://help.sigmacomputing.com/reference/list-workbooks) endpoint.
- The `destinationFolderId` in the request body specifies where to place the new workbook.

  - To use the "My Documents" folder for a specific user as the destination folder, call the [/v2/members/{memberId}](https://help.sigmacomputing.com/reference/get-member) endpoint and use the `homeFolderId` included in the response.
  - Retrieve the **folderId** of all folders by calling the [/v2/files](https://help.sigmacomputing.com/reference/list-files) endpoint and reviewing the `id` field in the response for files with a `type` of `folder`.

### Usage scenarios
- **Reuse**: Use an existing workbook as a baseline for a "one-off" purpose instead of a template.
- **Template creation**: Create a copy of a workbook to serve as a template for future projects.
- **Backup**: Make a backup of a workbook before making significant changes. [Version tagging](https://help.sigmacomputing.com/docs/version-tagging) is also a useful way to accomplish this.

### Best practices
- Always verify that the destination folder has the correct permissions set to avoid access issues.
- When using as a template, ensure that all data connections are correctly configured to prevent data leaks or errors.

### Copying bookmarks
- Set `copyBookmarks` to `all` to copy every saved view (formerly "bookmarks") applied to the source workbook. This is available to admins only.
- Set `copyBookmarks` to `accessible` to copy personal saved views and those shared with the user initiating the operation.
- Ownership of all copied bookmarks transfers to the user initiating the copy operation.

Reference: https://help.sigmacomputing.com/reference/copy-workbook

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: sigma-rest-api
  version: 1.0.0
paths:
  /v2/workbooks/{workbookId}/copy:
    post:
      operationId: copyWorkbook
      summary: Duplicate a workbook
      description: >-
        This endpoint lets you duplicate an existing workbook. The workbook copy
        can be placed in a different folder from the original workbook,
        potentially with a different name and description. This is useful for
        creating workbook templates or backups.


        ### Usage notes

        - The `workbookId` in the URL specifies the original workbook to be
        copied. Retrieve the **workbookId** by calling the
        [/v2/workbooks](https://help.sigmacomputing.com/reference/list-workbooks)
        endpoint.

        - The `destinationFolderId` in the request body specifies where to place
        the new workbook.

          - To use the "My Documents" folder for a specific user as the destination folder, call the [/v2/members/{memberId}](https://help.sigmacomputing.com/reference/get-member) endpoint and use the `homeFolderId` included in the response.
          - Retrieve the **folderId** of all folders by calling the [/v2/files](https://help.sigmacomputing.com/reference/list-files) endpoint and reviewing the `id` field in the response for files with a `type` of `folder`.

        ### Usage scenarios

        - **Reuse**: Use an existing workbook as a baseline for a "one-off"
        purpose instead of a template.

        - **Template creation**: Create a copy of a workbook to serve as a
        template for future projects.

        - **Backup**: Make a backup of a workbook before making significant
        changes. [Version
        tagging](https://help.sigmacomputing.com/docs/version-tagging) is also a
        useful way to accomplish this.


        ### Best practices

        - Always verify that the destination folder has the correct permissions
        set to avoid access issues.

        - When using as a template, ensure that all data connections are
        correctly configured to prevent data leaks or errors.


        ### Copying bookmarks

        - Set `copyBookmarks` to `all` to copy every saved view (formerly
        "bookmarks") applied to the source workbook. This is available to admins
        only.

        - Set `copyBookmarks` to `accessible` to copy personal saved views and
        those shared with the user initiating the operation.

        - Ownership of all copied bookmarks transfers to the user initiating the
        copy operation.
      tags:
        - Workbooks
      parameters:
        - name: workbookId
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The response body.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/workbooks_copyWorkbook_Response_200'
      requestBody:
        description: The request body.
        content:
          application/json:
            schema:
              type: object
              properties:
                destinationFolderId:
                  type: string
                  description: ID of the folder in which to place the copied workbook.
                name:
                  type: string
                  description: Name for the copied workbook as it appears in Sigma.
                description:
                  type: string
                  description: A description for the new workbook.
                copyBookmarks:
                  $ref: >-
                    #/components/schemas/V2WorkbooksWorkbookIdCopyPostRequestBodyContentApplicationJsonSchemaCopyBookmarks
                  description: >-
                    If set to `all` (available to admins only), every saved view
                    (bookmark) applied to the workbook is copied. If set to
                    `accessible`, only personal saved views and those shared
                    with the user initiating the operation are copied. Ownership
                    of all saved views in the duplicate workbook transfers to
                    the user initiating the operation. If not set, saved views
                    are not copied.
              required:
                - destinationFolderId
                - name
servers:
  - url: https://api.sigmacomputing.com
    description: Server for GCP (US) hosted organizations
  - url: https://api.sa.gcp.sigmacomputing.com
    description: Server for GCP (KSA) hosted organizations
  - url: https://aws-api.sigmacomputing.com
    description: Server for AWS US (West) hosted organizations
  - url: https://api.us-a.aws.sigmacomputing.com
    description: Server for AWS US (East) hosted organizations
  - url: https://api.ca.aws.sigmacomputing.com
    description: Server for AWS Canada hosted organizations
  - url: https://api.eu.aws.sigmacomputing.com
    description: Server for AWS Europe hosted organizations
  - url: https://api.au.aws.sigmacomputing.com
    description: Server for AWS Australia and APAC hosted organizations
  - url: https://api.uk.aws.sigmacomputing.com
    description: Server for AWS UK hosted organizations
  - url: https://api.us.azure.sigmacomputing.com
    description: Server for Azure US hosted organizations
  - url: https://api.eu.azure.sigmacomputing.com
    description: Server for Azure Europe hosted organizations
  - url: https://api.ca.azure.sigmacomputing.com
    description: Server for Azure Canada hosted organizations
  - url: https://api.uk.azure.sigmacomputing.com
    description: Server for Azure United Kingdom hosted organizations
  - url: https://api.au.azure.sigmacomputing.com
    description: Server for Azure Australia hosted organizations
components:
  schemas:
    V2WorkbooksWorkbookIdCopyPostRequestBodyContentApplicationJsonSchemaCopyBookmarks:
      type: string
      enum:
        - all
        - accessible
      description: >-
        If set to `all` (available to admins only), every saved view (bookmark)
        applied to the workbook is copied. If set to `accessible`, only personal
        saved views and those shared with the user initiating the operation are
        copied. Ownership of all saved views in the duplicate workbook transfers
        to the user initiating the operation. If not set, saved views are not
        copied.
      title: >-
        V2WorkbooksWorkbookIdCopyPostRequestBodyContentApplicationJsonSchemaCopyBookmarks
    V2WorkbooksWorkbookIdCopyPostResponsesContentApplicationJsonSchemaTagsItems:
      type: object
      properties:
        versionTagId:
          type: string
          description: Unique identifier of the tag.
        name:
          type: string
        sourceWorkbookVersion:
          type: number
          format: double
        taggedWorkbookId:
          type: string
          description: Unique identifier of the tagged workbook.
        workbookTaggedAt:
          type: string
          format: date-time
      required:
        - versionTagId
        - name
        - sourceWorkbookVersion
        - taggedWorkbookId
        - workbookTaggedAt
      title: >-
        V2WorkbooksWorkbookIdCopyPostResponsesContentApplicationJsonSchemaTagsItems
    workbooks_copyWorkbook_Response_200:
      type: object
      properties:
        workbookId:
          type: string
          description: Unique identifier of the workbook.
        workbookUrlId:
          type: string
        name:
          type: string
        url:
          type: string
        path:
          type: string
        latestVersion:
          type: number
          format: double
        ownerId:
          type: string
        createdBy:
          type: string
          description: The identifier of the user who created this object.
        updatedBy:
          type: string
          description: The identifier of the user or process that last updated this object.
        createdAt:
          type: string
          format: date-time
          description: When the object was created.
        updatedAt:
          type: string
          format: date-time
          description: When the object was last updated.
        isArchived:
          type: boolean
        tags:
          type: array
          items:
            $ref: >-
              #/components/schemas/V2WorkbooksWorkbookIdCopyPostResponsesContentApplicationJsonSchemaTagsItems
        description:
          type: string
      required:
        - workbookId
        - workbookUrlId
        - name
        - url
        - path
        - latestVersion
        - ownerId
        - createdBy
        - updatedBy
        - createdAt
        - updatedAt
      title: workbooks_copyWorkbook_Response_200
  securitySchemes:
    OAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 authentication

```

## Examples



**Request**

```json
{
  "destinationFolderId": "folder-9a8b7c6d5e4f3g2h1i0j",
  "name": "Q2 Sales Analysis Copy"
}
```

**Response**

```json
{
  "workbookId": "wb-123e4567-e89b-12d3-a456-426614174000",
  "workbookUrlId": "q2-sales-analysis-copy",
  "name": "Q2 Sales Analysis Copy",
  "url": "https://app.sigmacomputing.com/workbooks/q2-sales-analysis-copy",
  "path": "/My Documents/Reports/Q2 Sales Analysis Copy",
  "latestVersion": 2,
  "ownerId": "user-789f1234-e56b-78d9-c012-3456789abcde",
  "createdBy": "user-789f1234-e56b-78d9-c012-3456789abcde",
  "updatedBy": "user-789f1234-e56b-78d9-c012-3456789abcde",
  "createdAt": "2024-04-10T14:22:00Z",
  "updatedAt": "2024-04-10T14:22:00Z",
  "isArchived": false,
  "tags": [
    {
      "versionTagId": "tag-456a789b-c123-4d56-e789-0f123456789a",
      "name": "Pre-Q2 Review",
      "sourceWorkbookVersion": 1.9,
      "taggedWorkbookId": "wb-123e4567-e89b-12d3-a456-426614174000",
      "workbookTaggedAt": "2024-04-09T10:00:00Z"
    }
  ],
  "description": "Copy of Q2 Sales Analysis workbook for backup before applying new filters."
}
```

**SDK Code**

```python
import requests

url = "https://api.sigmacomputing.com/v2/workbooks/workbookId/copy"

payload = {
    "destinationFolderId": "folder-9a8b7c6d5e4f3g2h1i0j",
    "name": "Q2 Sales Analysis Copy"
}
headers = {
    "Authorization": "<token>.",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.sigmacomputing.com/v2/workbooks/workbookId/copy';
const options = {
  method: 'POST',
  headers: {Authorization: '<token>.', 'Content-Type': 'application/json'},
  body: '{"destinationFolderId":"folder-9a8b7c6d5e4f3g2h1i0j","name":"Q2 Sales Analysis Copy"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.sigmacomputing.com/v2/workbooks/workbookId/copy"

	payload := strings.NewReader("{\n  \"destinationFolderId\": \"folder-9a8b7c6d5e4f3g2h1i0j\",\n  \"name\": \"Q2 Sales Analysis Copy\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<token>.")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.sigmacomputing.com/v2/workbooks/workbookId/copy")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<token>.'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"destinationFolderId\": \"folder-9a8b7c6d5e4f3g2h1i0j\",\n  \"name\": \"Q2 Sales Analysis Copy\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.sigmacomputing.com/v2/workbooks/workbookId/copy")
  .header("Authorization", "<token>.")
  .header("Content-Type", "application/json")
  .body("{\n  \"destinationFolderId\": \"folder-9a8b7c6d5e4f3g2h1i0j\",\n  \"name\": \"Q2 Sales Analysis Copy\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.sigmacomputing.com/v2/workbooks/workbookId/copy', [
  'body' => '{
  "destinationFolderId": "folder-9a8b7c6d5e4f3g2h1i0j",
  "name": "Q2 Sales Analysis Copy"
}',
  'headers' => [
    'Authorization' => '<token>.',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.sigmacomputing.com/v2/workbooks/workbookId/copy");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<token>.");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"destinationFolderId\": \"folder-9a8b7c6d5e4f3g2h1i0j\",\n  \"name\": \"Q2 Sales Analysis Copy\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "<token>.",
  "Content-Type": "application/json"
]
let parameters = [
  "destinationFolderId": "folder-9a8b7c6d5e4f3g2h1i0j",
  "name": "Q2 Sales Analysis Copy"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.sigmacomputing.com/v2/workbooks/workbookId/copy")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```