---
title: "Duplicate a public link"
method: POST
path: "/links/{linkId}/duplicate"
tags: ["links"]
---

# Duplicate a public link

`POST /links/{linkId}/duplicate`

## Request

- Base URL: `https://docs-api.formify.eu/v1`
- URL: `https://docs-api.formify.eu/v1/links/{linkId}/duplicate`
- Auth: OAuth 2 (authorization code, authorization URL `https://docs-api.formify.eu/v1/oauth/authorize`, token URL `https://docs-api.formify.eu/v1/oauth/token`, scopes: `write`)

Creates a new public link with the same document, signature slots, language, print setting and AI
assistant configuration as the source. The copy gets its **own** URL — the source link is untouched
and keeps working.

The copy is **independent**: it gets its own copy of the document rather than sharing the source's, so
deleting the link you copied from never affects it, and a link duplicated from a colleague's shared one
belongs entirely to you.

### Billing
A duplicate is a new link, and is **billed exactly like `POST /links`**: it allocates its own instance
and is charged pro rata for the rest of the current period. `402` if the wallet cannot cover it,
`403` if the subscription is suspended.

### Notes
- Reading the source only requires access to it, so a link shared with the account can be duplicated
  by any member. The copy belongs to whoever duplicated it.
- If the source stores pre-filled names on its slots and it belongs to a colleague, those names are
  not carried over — they are stored per user.

## Path parameters

- `linkId` string, uuid, required

## Request body

- DuplicateRequest: Everything except the name is copied from the source.
  - `name` string: Name for the copy. Defaults to the source's name when omitted, which leaves you with two items of the same name.
  - `errorLanguage` 'en' | 'sv' | 'es': Language for error messages

## Response `201`

Public link duplicated successfully

- PublicLinkListDetail
  - `linkId` string, uuid: Unique identifier of the public link
  - `name` string: Name of the link
  - `createdAt` string, date-time: When the link was created
  - `updatedAt` string, date-time, nullable: When the link was last edited
  - `userId` string, uuid: User ID of the link owner
  - `sharingSetting` 'shared' | 'private': Who on the account may administer the link
  - `status` 'active' | 'disabled' | 'processing': - `active`: the link is live and can be opened and signed. - `disabled`: the link has been switched off and no longer accepts new signers. Documents already produced by it are unaffected. There is no way to switch it back on. - `processing`: the AI assistant is still reading the document. `linkUrl` is `null` and the link cannot be edited until this finishes. Note this is a different set of values from a document's `status` — a link is a source of documents rather than a signature request, so it has no signing progress of its own.
  - `linkUrl` string, nullable: The link to share. `null` while `status` is `processing`, because the document is not servable yet. Uses the account's custom domain when one is configured. Formify never sends this to anyone — distributing it is up to you.

## Other responses

- `401`: Unauthorized - Missing or invalid access token.
- `402`: Payment required - not enough credits to allocate a new link instance. No copy is created.
- `403`: Forbidden - missing `publicLinksCreate` capability, or the Formify subscription is suspended.
- `404`: Public link not found
- `409`: Conflict - the source link's document is no longer available, so it cannot be copied.
- `500`: Internal server error

---

[API](https://skmtc.dev/formify/apis/formify-api.md) · [All operations](https://skmtc.dev/formify/apis/formify-api/llms.txt) · [OpenAPI document](https://skmtc.dev/formify/apis/formify-api/revisions/571c4c0d4f4f?raw)
