links
Create, list, get, and delete share links.
A link is the public-facing URL someone uses to view a document or dataroom. Links carry their own access controls (password, email gating, expiry, download permission); the document or dataroom behind them just sits there.
list
papermark links list [--document <id>] [--dataroom <id>] [--group <gid>] [--limit <n>] [--cursor <id>]Lists share links. Filter by document, dataroom, or dataroom group, or omit all three for all links.
| Flag | Default | Effect |
|---|---|---|
--document <id> | none | Only links pointing at this document |
--dataroom <id> | none | Only links pointing at this dataroom |
--group <gid> | none | Only group links scoped to this dataroom group |
-l, --limit <n> | 25 | Page size, 1–100 |
-c, --cursor <id> | none | Continuation cursor |
papermark links list --document doc_aBc123For dataroom-bound links specifically,
papermark datarooms links <id>
is an ergonomic equivalent that takes the dataroom ID positionally
instead of as a flag.
get
papermark links get <id>Fetches one link by ID. Includes its access controls but not the view history; use views list for that.
create
papermark links create \
(--document <id> | --dataroom <id>) \
[--preset <id>] \
[--group <gid>] \
[--name <name>] \
[--password <password>] \
[--expires <iso-8601>] \
[--email-protected] \
[--email-authenticated] \
[--allow-download] \
[--allow-list <items>] \
[--deny-list <items>] \
[--confidential-view] \
[--screenshot-protection] \
[--agreement <id>] \
[--welcome-message <msg>] \
[--notification <on|off>] \
[--banner] \
[--custom-fields <json>] \
[--domain <domain> --slug <slug>] \
[--watermark] \
[--watermark-text <text>] \
[--watermark-tiled <on|off>] \
[--watermark-position <pos>] \
[--watermark-rotation <deg>] \
[--watermark-color <hex>] \
[--watermark-font-size <n>] \
[--watermark-opacity <n>]Either --document or --dataroom is required (exactly one).
| Flag | Default | Effect |
|---|---|---|
--document <id> | none | Document to share |
--dataroom <id> | none | Dataroom to share |
--preset <id> | none | Seed settings from a link preset. Preset values become the defaults; any flag you also pass overrides them |
--group <gid> | none | Scope the link to a dataroom group; requires --dataroom. Group links are always email-protected, and only group members (by email or domain) can open them |
-n, --name <name> | auto | Internal label |
--password <pw> | none | Viewer must enter this password |
--expires <iso> | never | ISO 8601 datetime, e.g. 2026-12-31T00:00:00Z |
--email-protected | off | Viewer must enter their email before viewing |
--email-authenticated | off | Viewer must verify their email with a one-time code (stronger than --email-protected) |
--allow-download | off | Viewer can download the file (default is view-only) |
--allow-list <items> | none | Comma-separated emails/domains allowed to view, e.g. @acme.com,bob@x.com (everyone else is blocked) |
--deny-list <items> | none | Comma-separated emails/domains blocked from viewing, e.g. @rival.com |
--confidential-view | off | Reveal only a narrow band of each page at a time; rest is blurred (anti-screenshot) |
--screenshot-protection | off | Block common screenshot / screen-recording shortcuts while viewing |
--agreement <id> | none | Require viewers to accept this agreement (NDA) before viewing. The single flag both enables the gate and sets the agreement id |
--welcome-message <msg> | none | Message shown to viewers before they open the link |
--notification <on|off> | on (or preset value) | Notify the team on each view of this link |
--banner | off | Show the end-of-document banner / signup form to viewers |
--custom-fields <json> | none | Custom form fields collected before access, as a JSON array (see Custom fields). Display order follows the array |
--domain <domain> | default | Host the link on a verified custom domain (e.g. docs.acme.com) instead of papermark.com. Requires --slug and a plan that supports custom domains |
--slug <slug> | none | Path segment on the custom domain, e.g. q3-deck → docs.acme.com/q3-deck. Requires --domain |
--watermark | off | Enable watermark overlay. Implied when any --watermark-* flag is set. |
--watermark-text <text> | none | Watermark text. Tokens {{email}}, {{date}}, {{time}}, {{link}}, {{ipAddress}} are interpolated per view. |
--watermark-tiled <on|off> | none | Tile the watermark across the page instead of anchoring it. |
--watermark-position <pos> | none | One of top-left, top-center, top-right, middle-left, middle-center, middle-right, bottom-left, bottom-center, bottom-right. |
--watermark-rotation <deg> | none | One of 0, 30, 45, 90, 180. |
--watermark-color <hex> | none | Text color as #RGB or #RRGGBB. |
--watermark-font-size <n> | none | Font size in points (integer, 1–96). |
--watermark-opacity <n> | none | Opacity from 0 (invisible) to 1 (fully opaque). |
The seven --watermark-* config flags must be passed together. Pass --watermark alone to enable the overlay with viewer defaults.
$ papermark links create \
--document doc_KlmN456 \
--password "open-sesame" \
--expires 2026-12-31T00:00:00Z \
--email-protected
ID: link_abcd1234
URL: https://papermark.com/view/abcd1234efghPresets
--preset <id> seeds the link from a saved link preset. Every
preset-controlled setting becomes the default — password, expiry, email
protection, downloads, allow/deny lists, watermark, screenshot
protection, confidential view, agreement, welcome message,
notifications, banner, and custom fields. Any flag you also pass
overrides the preset.
When --preset is used, boolean flags you leave unset defer to the
preset instead of forcing the setting off.
The preset's social-card metadata (custom OG tags — title, description, image, favicon) is applied too. Because there is no image-upload path in the CLI/API, a preset is the only way to set a link's preview metadata.
Custom fields
--custom-fields takes a JSON array of field objects. Each field needs
a type (one of SHORT_TEXT, LONG_TEXT, NUMBER, PHONE_NUMBER,
URL, CHECKBOX), an identifier, and a label; placeholder,
required, and disabled are optional.
papermark links create --document doc_KlmN456 \
--custom-fields '[{"type":"SHORT_TEXT","identifier":"company","label":"Company","required":true}]'The number of custom fields a link can carry is capped by your plan.
update
papermark links update <id> [flags]Change a link's access controls in place. The URL stays the same; viewers don't need to be re-notified. PATCH semantics: omitted flags are unchanged, but a passed value replaces the current one.
Boolean access controls are tri-state and take on or off:
| Flag | Effect |
|---|---|
-n, --name <name> | Rename the link |
--audience <general|group> | Switch the link's audience. group needs --group (or a group already on the link) and forces email protection; general clears the group scope |
--group <gid> | Dataroom group id. Pass with --audience group, or alone to swap the group of an existing group link |
--expires <iso> | Set expiry; empty string clears it |
--password <pw> | Set password; empty string clears it |
--email-protected <on|off> | Toggle email gating |
--email-authenticated <on|off> | Toggle email verification |
--allow-download <on|off> | Toggle download permission |
--allow-list <items> | Comma-separated email/domain allow list |
--deny-list <items> | Comma-separated email/domain deny list |
--watermark <on|off> | Toggle watermark overlay |
--watermark-text <text> | Update watermark text (with {{email}} / {{date}} / {{time}} / {{link}} / {{ipAddress}} tokens) |
--watermark-tiled <on|off> | Tile vs. anchored at --watermark-position |
--watermark-position <pos> | One of 9 anchor positions |
--watermark-rotation <deg> | One of 0, 30, 45, 90, 180 |
--watermark-color <hex> | #RGB or #RRGGBB |
--watermark-font-size <n> | 1–96 |
--watermark-opacity <n> | 0–1 |
--watermark-clear | Clear the existing watermark config (mutually exclusive with --watermark-*) |
--screenshot-protection <on|off> | Toggle screenshot blur |
--confidential-view <on|off> | Toggle anti-screenshot view (only a narrow band of each page renders sharp) |
--enable-agreement <on|off> | Toggle the agreement (NDA) gate. When turning on, set --agreement-id (or have one already on the link) |
--agreement-id <id> | Agreement (NDA) id viewers must accept; empty string clears it |
--welcome-message <msg> | Set the welcome message; empty string clears it |
--notification <on|off> | Toggle view notifications for the team |
--banner <on|off> | Toggle the end-of-document banner / signup form |
--custom-fields <json> | Replace the custom form fields with this JSON array (full replace; pass [] to clear all) |
--domain <domain> | Move the link onto a verified custom domain (with --slug). Pass papermark.com to move it back to the default domain |
--slug <slug> | Path segment on the custom domain; pass with --domain |
Watermark config on update is PATCH-style: pass all seven --watermark-* flags together to replace the config, or pass --watermark-clear to drop it.
papermark links update link_abcd1234 --confidential-view ondelete
papermark links delete <id>Revokes the link. The URL stops working immediately; existing viewers in flight see an "expired" page on the next request.
permissions
papermark links permissions get <id>
papermark links permissions set <id> (--file <path> | --item <itemId> --type <document|folder> [--view on|off] [--download on|off] | --clear)Per-item file permissions on a dataroom link: control which documents and folders this specific link shows, without creating a group. With no overrides, viewers see the full dataroom.
Unlike group permissions,
set here uses full-replace semantics, matching the dashboard:
the payload is the complete desired state, items not listed lose
their override, and --clear removes every override, which hides
every item on the link. Ancestor folders of visible items stay
visible automatically.
| Flag | Default | Effect |
|---|---|---|
--file <path> | none | JSON array of {item_id, item_type, can_view, can_download}: the complete desired state |
--item <itemId> | none | Single item (the link will show only this item) |
--type <document|folder> | none | Item type for --item |
--view <on|off> | on | Allow viewing |
--download <on|off> | off | Allow downloading (also needs --allow-download on the link) |
--clear | off | Remove all overrides and hide every item |
On links with a group audience these overrides are ignored; the group's permissions take precedence.
# Show only the teaser deck on this link
papermark links permissions set link_abcd1234 \
--item ddoc_3f9 --type document --view onRequired scopes
| Command | Scope |
|---|---|
list, get, permissions get | links.read |
create, update, delete, permissions set | links.write |
For dataroom-bound links, you also need datarooms.read on the
referenced dataroom.
Related
datarooms groups: named audiences with reusable permissions, shared via--grouplinks- Guide: Share a dataroom with an investor group