views
Read view analytics for a share link.
papermark views list returns the raw view events for a single share
link — one row per view, with viewer info, time spent, and per-page
breakdown.
list
papermark views list --link <id> [--limit <n>] [--cursor <id>]| Flag | Default | Effect |
|---|---|---|
--link <id> | required | The link whose views you want |
-l, --limit <n> | 25 | Page size, 1–100 |
-c, --cursor <id> | — | Continuation cursor |
$ papermark views list --link link_abcd1234
ID EMAIL VIEWED DURATION
view_qRsT01 alice@acme.com 2 hours ago 4m 12s
view_uVwX02 bob@acme.com yesterday 1m 03sJSON output includes per-page durations and viewer location:
papermark views list --link link_abcd1234 --json | jq '.data[0]'{
"id": "view_qRsT01",
"linkId": "link_abcd1234",
"viewer": {
"email": "alice@acme.com",
"country": "US"
},
"viewedAt": "2026-04-25T13:21:08.000Z",
"duration": 252,
"pages": [
{ "page": 1, "duration": 18 },
{ "page": 2, "duration": 142 },
{ "page": 3, "duration": 92 }
]
}"Who viewed my pitch deck this week?"
A common one-liner. Find the link, then list views and filter by date:
LINK=$(papermark links list --document doc_aBc123 --json | jq -r '.data[0].id')
papermark views list --link "$LINK" --json \
| jq '.data[] | select(.viewedAt > "2026-04-18") | {email: .viewer.email, duration}'For aggregate stats (totals, unique viewers, average read time) without per-view detail, use the API's analytics endpoints directly. The CLI doesn't wrap those yet.
Required scopes
analytics.read plus links.read (to validate the link first).