Merge and Sign
Merges data into a Zoho Writer document template and sends the merged documents to specified recipients for signing via Zoho Sign.
Merge Data: Provide exactly one of merge_data, merge_data_csv_content, merge_data_json_content, merge_data_csv_url, merge_data_json_url, or record_id.
Endpoints
OAuth Scope
curl --request POST \
--url https://www.zohoapis.com/writer/api/v1/documents/a1b2c3d4e5f6g7h8i9/merge/sign \
--header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' \
--header 'content-type: multipart/form-data' \
-F 'service_name=zohosign' \
-F 'filename=Invoice_2026_001' \
-F 'merge_data={
"data": [
{
"name": "John Doe",
"amount": "1500.00"
}
]
}' \
-F 'merge_data_csv_content=@file_path' \
-F 'merge_data_json_content=@file_path' \
-F 'merge_data_csv_url=https://zylker.com/merge-data.csv' \
-F 'merge_data_json_url=https://zylker.com/merge-data.json' \
-F 'record_id=4876000000123456' \
-F 'signer_data=[
{
"recipient_1": "john.doe@zylker.com",
"recipient_name": "John Doe",
"action_type": "sign"
}
]' \
-F 'sign_in_order=true' \
-F 'message=Please review and sign the attached document.' \
-F 'set_expire=30' \
-F 'reminder_period=3' \
-F 'common_attachments=@file_path' \
-F 'unique_attachments=[
{
"type": "field",
"field_id": "invoice_url"
}
]' \
-F 'sign_org_id=123456789' \
-F 'sign_request_type_id=987654321' \
-F 'allowed_cloud_provider_ids=[
10,
25
]' \
-F 'test_mode=true'Path Parameters
The unique identifier of the Zoho Writer document template.
Request Body
multipart/form-dataThe signing service to use for the merged documents.
A unique name for the signed document.
Inline merge data as a JSON object. Must contain a data key whose value is a JSON array of records, each being a key-value map matching the template's merge fields.
Hide Sub-Attributes
Array of records used to populate the template merge fields.
A CSV file uploaded in the request body. Each row represents one merge record. Maximum file size: 2 MB. Supported formats: csv.
A JSON file uploaded in the request body. Must contain an array of merge records. Maximum file size: 2 MB. Supported formats: json.
A publicly accessible URL pointing to a CSV file of merge records. Maximum file size: 2 MB. Supported formats: csv.
A publicly accessible URL pointing to a JSON file of merge records. Maximum file size: 2 MB. Supported formats: json.
A record identifier from Zoho CRM, Zoho Creator, or Bigin. When provided, the API fetches merge data internally from the respective service.
An array of recipient objects specifying who receives the document and their signing role. Each object must include a dynamic key recipient_n (e.g., recipient_1, recipient_2) containing the recipient's email address. Up to 25 recipients are supported. When omitted, the values configured in the template settings are used.
Hide Sub-Attributes
The action the recipient is required to perform.
The display name of the recipient.
The language code for the notification email sent to the recipient. Supported values: zh, nl, en, fr, de, it, ja, pl, pt, ru, es, sv.
Additional delivery channels for signing notifications beyond email.
Hide Sub-Attributes
The notification channel for signing delivery. When specified, notifications are sent via this channel in addition to email.
The country code for the recipient's phone number. Required when type is specified. When verification_info.type is also sms or whatsapp, this must match the country code given there.
The recipient's phone number without the country code. Required when type is specified. When verification_info.type is also sms or whatsapp, this must match the phone number given there.
A private note visible only to this recipient.
Details of the in-person signer. Applicable when action_type is in_person_sign.
Hide Sub-Attributes
Name of the in-person signer.
Email of the in-person signer. Required when verification_info.type is email.
Identity verification settings for the recipient.
Hide Sub-Attributes
The identity verification method required before the recipient can sign. sms and whatsapp require countrycode and phonenumber; offline requires code; email sends a one-time code to the recipient's email address.
The country code for the recipient's phone number. Required when type is sms or whatsapp.
The recipient's phone number without the country code. Required when type is sms or whatsapp.
A 6-digit code required when type is offline.
When true, recipients must sign in the order they are listed in signer_data.
A message included in the signing request notification sent to recipients.
The number of days after which the signing request expires.
The interval in days between reminder notifications sent to pending signers.
One or more files to include as common attachments for all recipients. Maximum 20 files, up to 10 MB each, with a total attachment size of 40 MB. Supported formats: docx, doc, rtf, pdf, zip, html, txt, png, jpeg, gif, jpg.
An array of objects that maps a distinct attachment to each recipient. Use type: field to map attachment URLs from a data field, or type: file to match files from a folder. Maximum 20 attachments per recipient, up to 10 MB each, with a total attachment size of 40 MB. Supported formats: pdf, docx, xlsx, xls, png, jpg, jpeg, psd, ical, ics, ifb.
Hide Sub-Attributes
The attachment mapping strategy to use.
The data field containing attachment URLs. Applicable when type is field.
The ID of the folder containing the attachment files. Applicable when type is file.
A filter to match files in the folder by name. Applicable when type is file.
Hide Sub-Attributes
The Zoho Sign organization ID from which the document is sent for signing.
The Zoho Sign document type ID for the signing request.
Identifiers of the digital signature or identity providers that signers are permitted to use. Restricts the signing process to the specified providers. Supported values: 10, 20, 25, 40, 50, 60, 70, 71, 80, 90, 100, 110, 120, 130, 140, 150.
When true, the merge runs without consuming credit points. The output document will include a watermark. Limited to 50 merges per day per organization. Sign credits are still consumed when the document is sent for signing.
// Note: payload contains multiple type attributes
// type: string
service_name = zohosign
// type: string
filename = Invoice_2026_001
// type: object
merge_data = {
"data": [
{
"name": "John Doe",
"amount": "1500.00"
}
]
}
// type: file
merge_data_csv_content = <file>
// type: file
merge_data_json_content = <file>
// type: string(uri)
merge_data_csv_url = https://zylker.com/merge-data.csv
// type: string(uri)
merge_data_json_url = https://zylker.com/merge-data.json
// type: string
record_id = 4876000000123456
// type: array
signer_data = [
{
"recipient_1": "john.doe@zylker.com",
"recipient_name": "John Doe",
"action_type": "sign"
}
]
// type: boolean
sign_in_order = true
// type: string
message = Please review and sign the attached document.
// type: integer
set_expire = 30
// type: integer
reminder_period = 3
// type: file
common_attachments = <file>
// type: array
unique_attachments = [
{
"type": "field",
"field_id": "invoice_url"
}
]
// type: string
sign_org_id = 123456789
// type: string
sign_request_type_id = 987654321
// type: array
allowed_cloud_provider_ids = [
10,
25
]
// type: boolean
test_mode = true {
"merge_report_data_url": "https://writer.zoho.com/writer/api/v1/merge/job/0tq5n465132106580437abe99b6f56f2b0c85/data",
"merge_report_url": "https://writer.zoho.com/writer/v1/mailmerge/job/0tq5n465132106580437abe99b6f56f2b0c85",
"records": [
{
"data": {
"name": "Amelia",
"email": "amelia@zylker.com"
},
"download_link": "{url}",
"sign_request_id": "12345****",
"status": "inprogress"
}
]
}
© 2026, Zoho Corporation Pvt. Ltd. All Rights Reserved.