Skip to Content
HelvetlyDocs
API referenceDocuments

Copy a document

Needs a token with the write:documents scope. Authentication

Try in Playground sends a real request to app.helvetly.com with a token you paste. It stays in this browser tab only (session storage) and goes to no one else.

POST
/api/v1/documents/{id}/copy

Makes an independent copy of a live document in folder_id (default the same folder; null the top level), named like keep-both ("Offer (2).pdf") when the name is taken. Links, shares and retention are not copied. An explicit copy is not an upload, so the duplicate check does not apply. 409 trashed for a trashed document. Not idempotent: each call makes another copy.

Authorization

bearerAuth
headerAuthorizationBearer <token>

A personal API token, hvt_…, with scopes such as read:* or write:invoices

Path Parameters

id*string

The document's id.

Request Body

application/json
  1. body
folder_id?|

Target folder; absent: the same folder; null: top level.

Response Body

Created

application/json
  1. response
data*

A document's metadata. The bytes come from download_document and get_document_content.

Example Request
curl -X POST 'https://app.helvetly.com/api/v1/documents/string/copy' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "data": {    "id": "string",    "name": "string",    "folder_id": "string",    "folder": {      "id": "string",      "name": "string"    },    "size": 0,    "content_type": "string",    "kind": "pdf",    "previewable": true,    "sha256": "string",    "links": [      {        "type": "string",        "id": "string",        "label": "string",        "retains": true      }    ],    "retained_until": "2019-08-24",    "uploaded_by": {      "id": "string",      "name": "string"    },    "created_at": "2019-08-24T14:15:22Z",    "updated_at": "2019-08-24T14:15:22Z",    "deleted_at": "2019-08-24T14:15:22Z",    "deleted_by": {      "id": "string",      "name": "string"    },    "purge_at": "2019-08-24T14:15:22Z"  }}