PapermarkDocs

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.

FlagDefaultEffect
--document <id>noneOnly links pointing at this document
--dataroom <id>noneOnly links pointing at this dataroom
--group <gid>noneOnly group links scoped to this dataroom group
-l, --limit <n>25Page size, 1–100
-c, --cursor <id>noneContinuation cursor
papermark links list --document doc_aBc123

For 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).

FlagDefaultEffect
--document <id>noneDocument to share
--dataroom <id>noneDataroom to share
--preset <id>noneSeed settings from a link preset. Preset values become the defaults; any flag you also pass overrides them
--group <gid>noneScope 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>autoInternal label
--password <pw>noneViewer must enter this password
--expires <iso>neverISO 8601 datetime, e.g. 2026-12-31T00:00:00Z
--email-protectedoffViewer must enter their email before viewing
--email-authenticatedoffViewer must verify their email with a one-time code (stronger than --email-protected)
--allow-downloadoffViewer can download the file (default is view-only)
--allow-list <items>noneComma-separated emails/domains allowed to view, e.g. @acme.com,bob@x.com (everyone else is blocked)
--deny-list <items>noneComma-separated emails/domains blocked from viewing, e.g. @rival.com
--confidential-viewoffReveal only a narrow band of each page at a time; rest is blurred (anti-screenshot)
--screenshot-protectionoffBlock common screenshot / screen-recording shortcuts while viewing
--agreement <id>noneRequire viewers to accept this agreement (NDA) before viewing. The single flag both enables the gate and sets the agreement id
--welcome-message <msg>noneMessage shown to viewers before they open the link
--notification <on|off>on (or preset value)Notify the team on each view of this link
--banneroffShow the end-of-document banner / signup form to viewers
--custom-fields <json>noneCustom form fields collected before access, as a JSON array (see Custom fields). Display order follows the array
--domain <domain>defaultHost 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>nonePath segment on the custom domain, e.g. q3-deckdocs.acme.com/q3-deck. Requires --domain
--watermarkoffEnable watermark overlay. Implied when any --watermark-* flag is set.
--watermark-text <text>noneWatermark text. Tokens {{email}}, {{date}}, {{time}}, {{link}}, {{ipAddress}} are interpolated per view.
--watermark-tiled <on|off>noneTile the watermark across the page instead of anchoring it.
--watermark-position <pos>noneOne of top-left, top-center, top-right, middle-left, middle-center, middle-right, bottom-left, bottom-center, bottom-right.
--watermark-rotation <deg>noneOne of 0, 30, 45, 90, 180.
--watermark-color <hex>noneText color as #RGB or #RRGGBB.
--watermark-font-size <n>noneFont size in points (integer, 1–96).
--watermark-opacity <n>noneOpacity 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/abcd1234efgh

Presets

--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:

FlagEffect
-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>01
--watermark-clearClear 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 on

delete

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.

FlagDefaultEffect
--file <path>noneJSON array of {item_id, item_type, can_view, can_download}: the complete desired state
--item <itemId>noneSingle item (the link will show only this item)
--type <document|folder>noneItem type for --item
--view <on|off>onAllow viewing
--download <on|off>offAllow downloading (also needs --allow-download on the link)
--clearoffRemove 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 on

Required scopes

CommandScope
list, get, permissions getlinks.read
create, update, delete, permissions setlinks.write

For dataroom-bound links, you also need datarooms.read on the referenced dataroom.

On this page