---
title: Views of a share link (GET /api/v2/links/{link_id}/views) | HelpRange API
description: GET /api/v2/links/{link_id}/views: Who opened one share link, newest first: the verified e-mail (or anonymous), when, how long, pages read, country, device, whether they downloaded, and the session replay when one was recorded.
url: https://www.helprange.com/developers/api/list-link-views
---

GET

# Views of a share link

`https://www.helprange.com/api/v2/links/{link_id}/views`

Who opened one share link, newest first: the verified e-mail (or anonymous), when, how long, pages read, country, device, whether they downloaded, and the session replay when one was recorded. Pages of up to 200 views.

**Plans:** Pro, Max, Unlimited, Deal Room Pass, trial. **Auth:** `Authorization: Bearer hr_live_…` (team key), `X-API-Key`, `Authorization: Api-Key <key>` or an OAuth `Bearer` token. **Scope:** `analytics:read`. **Operation id:** `listLinkViews`

## Parameters

| Name | In | Type | Description |
|---|---|---|---|
| `link_id` required | path | integer | Share link id (from List all share links or List share links of a document). (min 1) |
| `page` | query | integer | Page number, 1 or more (default 1). next_page in the response is the next one, or null. (min 1) |
| `limit` | query | integer | Items per page, 1–200 (default 50). (min 1, max 200) |

## Example request

```
curl -X GET 'https://www.helprange.com/api/v2/links/264/views?page=1&limit=50' \
  -H "X-API-Key: $HELPRANGE_API_KEY"
```

```
const res = await fetch('https://www.helprange.com/api/v2/links/264/views?page=1&limit=50', {
  method: 'GET',
  headers: {'X-API-Key': process.env.HELPRANGE_API_KEY},
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status}: ${data.error || data.message || data.reason}`);
console.log(data);
```

```
import os

import requests

r = requests.get(
    'https://www.helprange.com/api/v2/links/264/views',
    headers={'X-API-Key': os.environ['HELPRANGE_API_KEY']},
    params={
        "page": 1,
        "limit": 50,
    },
    timeout=60,
)
r.raise_for_status()
print(r.json())
```

The samples read the key from the `HELPRANGE_API_KEY` environment variable.

## Responses

| Status | Description |
|---|---|
| `200` | OK |
| `401` | Missing or invalid API key / OAuth token. Team keys: code invalid_key, key_revoked, key_expired or key_owner_removed. |
| `402` | Your plan does not include the REST API (the Free plan) or this feature (e.g. NDA needs Max). |
| `403` | The team API key lacks the scope this endpoint needs. |
| `404` | Not found – or not yours (the API never says which). |
| `405` | Wrong HTTP method for this endpoint. |
| `429` | A usage limit was reached – wait Retry-After seconds. |

Example response · 200

```
{
  "link": {
    "id": 264,
    "url": "https://www.helprange.com/view/8956d1e7b91b47e196a8040b1d4894f8/proposal.pdf",
    "label": "ACME - Anna",
    "allow_download": false,
    "passcode": true,
    "expires_on": "2026-12-31",
    "views_limit": null,
    "watermark": true,
    "require_email": true,
    "disallow_forwarding": false,
    "one_viewer_at_a_time": false,
    "document_id": 250,
    "document": "proposal.pdf",
    "folder_id": 31,
    "status": "active",
    "views": 7,
    "downloads": 0,
    "created_at": "2026-11-10T08:00:00+00:00",
    "data_room_ids": []
  },
  "views": [
    {
      "id": 98321,
      "opened_at": "2026-11-15T09:12:40+00:00",
      "viewer": "anna@client.com",
      "viewer_email": "anna@client.com",
      "seconds_read": 312,
      "pages_read": 9,
      "country": "DE",
      "device": "Mac OS X · Chrome",
      "downloaded": false,
      "link_id": 264,
      "link_label": "ACME - Anna",
      "document_id": 250,
      "document": "proposal.pdf",
      "replay_available": true,
      "replay_url": "https://www.helprange.com/user/file/250/opening/98321/replay"
    }
  ],
  "page": 1,
  "limit": 50,
  "total": 1,
  "next_page": null
}
```

## Try it

**Uses your real account.** The request goes from your browser straight to `www.helprange.com` with your API key and acts as you. The key stays in this page (in this tab's session storage only if you tick the box), is never put in a URL and is not sent to analytics. Do not paste a key on a shared computer.
 API key

  Remember in this tab

link_id (path, required)

page (query)

limit (query)

```

```
