Insert Links into PDF
Adds one or more clickable link annotations to a PDF, targeted either by explicit page coordinates or by matching text, and makes the modified PDF available for download.
Link Placement: For each entry in input_options.link_info, provide query when type is text to link text matching that query wherever it's found on the page, or provide rect when type is rect to link an explicit coordinate box instead.
Endpoint
OAuth Scope
curl --request POST \
--url https://www.zohoapis.com/pdfeditor/api/v1/pdf/annotation/link/insert \
--header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' \
--header 'content-type: multipart/form-data' \
-F 'file=@file_path' \
-F 'input_options={
"link_info": [
{
"type": "rect",
"value": "https://zylker.com/annual-report",
"rect": {
"top": "100px",
"left": "100px",
"width": "200px",
"height": "50px"
},
"page_range": "1-3"
},
{
"type": "text",
"value": "https://zylker.com/annual-report",
"query": "Annual Report Summary",
"page_range": "1"
}
]
}' \
-F 'password=OpenSesame123'Request Body
multipart/form-dataThe source PDF to add links to, uploaded directly or imported from a publicly accessible URL. The file must be no larger than 50 MB, contain no more than 400 pages, and have no page larger than 2,400 square inches. Its filename must not exceed 255 characters. Supported formats: pdf.
Configures the links to add to the PDF.
{
"link_info": [
{
"type": "rect",
"value": "https://zylker.com/annual-report",
"rect": {
"top": "100px",
"left": "100px",
"width": "200px",
"height": "50px"
},
"page_range": "1-3"
},
{
"type": "text",
"value": "https://zylker.com/annual-report",
"query": "Annual Report Summary",
"page_range": "1"
}
]
}Show Sub-Attributes
One to 25 links to add to the PDF.
[
{
"type": "rect",
"value": "https://zylker.com/annual-report",
"rect": {
"top": "100px",
"left": "100px",
"width": "200px",
"height": "50px"
},
"page_range": "1-3"
},
{
"type": "text",
"value": "https://zylker.com/annual-report",
"query": "Annual Report Summary",
"page_range": "1"
}
]Show Sub-Attributes
Whether the link is placed on text matching a query, or on an explicit coordinate box.
The URL the link opens when clicked.
The text to search for and link on each page in page_range.
The explicit coordinate box the link is placed on.
{
"top": "100px",
"left": "100px",
"width": "200px",
"height": "50px"
}Show Sub-Attributes
The link box's distance from the top of the page, optionally suffixed with px. The value is applied as a PDF point (1/72 in), not a true screen pixel.
The link box's distance from the left of the page, optionally suffixed with px. The value is applied as a PDF point (1/72 in), not a true screen pixel.
The link box's width, optionally suffixed with px. The value is applied as a PDF point (1/72 in), not a true screen pixel.
The link box's height, optionally suffixed with px. The value is applied as a PDF point (1/72 in), not a true screen pixel.
The pages this link applies to. Accepts all, odd, even, or a comma-separated list of page numbers and ranges (e.g. 1,3-5).
The password to unlock the source PDF, if it is password-protected.
// Note: payload contains multiple type attributes
// type: file
file = quarterly-review.pdf
// type: object
input_options = {
"link_info": [
{
"type": "rect",
"value": "https://zylker.com/annual-report",
"rect": {
"top": "100px",
"left": "100px",
"width": "200px",
"height": "50px"
},
"page_range": "1-3"
},
{
"type": "text",
"value": "https://zylker.com/annual-report",
"query": "Annual Report Summary",
"page_range": "1"
}
]
}
// type: string
password = OpenSesame123 {
"status": "inprogress",
"status_check_url": "https://www.zohoapis.com/pdfeditor/api/v1/pdf/annotation/link/insert/job/3f65c7592a741d98e46bf310cbe678f574a1d51fce306a8d9b6430217e538acd"
}
Rate Limits
Duration - Time window for the threshold.
Threshold - Number of API calls allowed within the specified duration.
Lock Period - Wait time before consecutive API requests.
© 2026, Zoho Corporation Pvt. Ltd. All Rights Reserved.