https://www.helprange.com/api/v2/linksEvery share link of the documents you can open (administrators: the whole team; members: their folders), newest first, with its settings, status, views and data rooms. Filters combine; pages of up to 200 links.
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: links:read. Operation id: listLinks
| Name | In | Type | Description |
|---|---|---|---|
document_id | query | integer | Only links of this document. (min 1) |
folder_id | query | integer | Only links of documents in this folder. (min 1) |
room_id | query | integer | Only links of this data room (data_room_id is accepted too). (min 1) |
label | query | string | Label contains this text (case-insensitive); "default" = the documents' default links. |
created_after | query | string | Created on or after: YYYY-MM-DD (UTC) or an ISO 8601 date-time. |
created_before | query | string | Created on or before: YYYY-MM-DD (the whole day, UTC) or an ISO 8601 date-time. |
status | query | "active" | "expired" | "disabled" | "all" | active, expired (past its expiry date or views limit used up) or disabled (turned off in the panel). Missing or all: every link. |
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) |
curl -X GET 'https://www.helprange.com/api/v2/links?document_id=250&folder_id=31&label=ACME&created_after=2026-11-01&page=1&limit=50' \
-H "X-API-Key: $HELPRANGE_API_KEY"
const res = await fetch('https://www.helprange.com/api/v2/links?document_id=250&folder_id=31&label=ACME&created_after=2026-11-01&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',
headers={'X-API-Key': os.environ['HELPRANGE_API_KEY']},
params={
"document_id": 250,
"folder_id": 31,
"label": "ACME",
"created_after": "2026-11-01",
"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.
| Status | Description |
|---|---|
200 | OK |
400 | Invalid input – the message says which parameter. |
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. |
{
"links": [
{
"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": []
}
],
"page": 1,
"limit": 50,
"total": 1,
"next_page": null
}
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.