---
title: "Create a dynamic link"
method: POST
path: "/workspaces/{workspaceId}/dynamic-links"
tags: ["dynamic-links"]
---

# Create a dynamic link

`POST /workspaces/{workspaceId}/dynamic-links`

## Request

- Base URL: `https://api.clipform.io/v1`
- URL: `https://api.clipform.io/v1/workspaces/{workspaceId}/dynamic-links`
- Auth: HTTP bearer

Creates a dynamic link, either free or pointed at a form in the workspace, minting a repointable public id.

## Path parameters

- `workspaceId` string, uuid, required

## Request body

- object
  - `name` string, required
  - `form_id` string, uuid, nullable

## Response `201`

Dynamic link created

- DynamicLink
  - `id` string, uuid
  - `public_id` string: Opaque 8-character hex handle, repointable to a different form_id without changing this value.
  - `name` string
  - `form_id` string, uuid, nullable: Null when the target form has been deleted (an orphaned link, still listed and repointable).
  - `slug` string, nullable: Vanity path on the workspace's active custom domain (forms.acme.com/<slug>). Null until set.
  - `form` object, nullable: Present in list responses only.
    - `share_id` string, nullable
    - `title` string, nullable
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400`: Missing/invalid name, or form_id is not a valid UUID
- `403`: The workspace's plan does not include dynamic links
- `404`: form_id does not belong to this workspace
- `409`: A dynamic link with that name already exists
- `429`: Rate limit exceeded.

---

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