POST

v1: Create a link

https://www.helprange.com/public-api/file/{file_id}/link

A new labelled link for a document. label, isAllowDownloadingAndPrint, isOnlyOneUserViewing, passcode and expirationDate must be present (passcode and expirationDate may be null). Booleans: true / false, 1 / 0 or "true" / "false". An empty label, an expirationDate in the past or unreadable, or a negative / non-whole viewsLimit answer 400 with {"result": "failure", "reason"}. A protection setting your plan does not include answers 403 with {"result": "failure", "reason", "plan_error", "features"}.

Plans: Max, Unlimited, Deal Room Pass, trial. Auth: the API key in Authorization (bare, or Bearer hr_live_…) (v1). Scope: links:write. Operation id: v1CreateLink

Parameters

NameInTypeDescription
file_id requiredpathintegerDocument id. (min 1)

Request body

Content types: application/json.

FieldTypeDescription
label requiredstringName of the link (not empty).
isAllowDownloadingAndPrint requiredboolean or integer or stringAllow download & print. true / false (also 1 / 0 or "true" / "false").
isOnlyOneUserViewing requiredboolean or integer or stringOnly one person can view at the same time. true / false (also 1 / 0 or "true" / "false").
passcode requiredstring or nullOnly spaces = no passcode.
expirationDate requiredstring (date) or nullLast day, YYYY-MM-DD: today or later (a past day → 400).
viewsLimitinteger or null0 or null = no limit; negative → 400. (min 0)
isForwardableboolean or integer or stringDefault true. true / false (also 1 / 0 or "true" / "false").
isScreenshotMaskboolean or integer or stringScreenshot protection. true / false (also 1 / 0 or "true" / "false").
isScreenAppOnlyboolean or integer or stringOpen only in the app. true / false (also 1 / 0 or "true" / "false").
isWatermarkboolean or integer or stringWatermark. true / false (also 1 / 0 or "true" / "false").

Example request

curl -X POST https://www.helprange.com/public-api/file/124/link \
  -H "Authorization: $HELPRANGE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary '{"label": "someLabel", "isAllowDownloadingAndPrint": true, "isOnlyOneUserViewing": false, "isForwardable": true, "isScreenshotMask": false, "isWatermark": false, "passcode": "abcd", "expirationDate": "2026-12-24", "viewsLimit": 10}'

The samples read the key from the HELPRANGE_API_KEY environment variable.

Responses

StatusDescription
200OK
400Invalid input – the message says which parameter.
401Missing or invalid API key / OAuth token. Team keys: code invalid_key, key_revoked, key_expired or key_owner_removed.
402Your plan does not include the REST API (or this feature).
403v1: the key is invalid, or the folder / file / guest / data room is not yours (HTML page unless you send Accept: application/json). Team keys (v1 and v2): code insufficient_scope with required_scope – the key lacks the scope this endpoint needs.
404Not found.
429A usage limit was reached – wait Retry-After seconds.
Example response · 200
{
  "id": 261,
  "link": "/view/8956d1e7b91b47e1a67a8040b1d4894f"
}

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 – this POST changes data. 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.