How to send a private message to the signer when sending a document via API?

BoldSign supports sending private messages to signers when sending a document via API. This feature is particularly useful when you need to provide specific instructions or information to individual signers. The sender can send a private message to each recipient when sending a document.

Below are example codes for sending a private message to a signer:

Code snippet

curl -X 'POST' \
  'https://api.boldsign.com/v1/document/send' \
  -H 'accept: application/json' \
  -H 'X-API-KEY: {your API key}' \
  -H 'Content-Type: multipart/form-data' \
  -F 'Title="Invitation form"' \
  -F 'Signers={
  "name": "hanky",
  "emailAddress": "[email protected]",
  "privateMessage": "This is private message for signer",
  "signerType": "Signer",
  "signerRole": "Signer",
  "formFields": [
    {
      "id": "Signature",
      "name": "Signature",
      "fieldType": "Signature",
      "pageNumber": 1,
      "bounds": {
        "x": 100,
        "y": 100,
        "width": 125,
        "height": 25
      },
      "isRequired": true
    }
  ],
  "locale": "EN"
}' \
-F 'Signers={
  "name": "Cilian",
  "emailAddress": "[email protected]",
  "signerType": "Signer",
  "signerRole": "Signer",
  "formFields": [
    {
      "id": "Signature1",
      "name": "Signature",
      "fieldType": "Signature",
      "pageNumber": 1,
      "bounds": {
        "x": 100,
        "y": 150,
        "width": 125,
        "height": 25
      },
      "isRequired": true
    }
  ],
  "locale": "EN"
}' \
  -F 'Files=@{your file}' \
var apiClient = new ApiClient("https://api.boldsign.com", "{Your API key}");
var documentClient = new DocumentClient(apiClient);

var documentFilePath = new DocumentFilePath
{
    ContentType = "application/pdf",
    FilePath = "{Your File path}"
};

var filesToUpload = new List<IDocumentFile>
{
    documentFilePath,
};

var signatureField = new FormField(
    id: "Signature",
    isRequired: true,
    type: FieldType.Signature,
    pageNumber: 1,
    bounds: new Rectangle(x: 100, y: 100, width: 125, height: 25));

var signatureField1 = new FormField(
    id: "Signature1",
    isRequired: true,
    type: FieldType.Signature,
    pageNumber: 1,
    bounds: new Rectangle(x: 100, y: 150, width: 125, height: 25));

var formFieldCollections = new List<FormField>()
{
    signatureField
};

var formFieldCollections1 = new List<FormField>()
{
    signatureField1
};

var signer = new DocumentSigner(
    signerName: "Hanky",
    signerType: SignerType.Signer,
    signerEmail: "[email protected]",
    privateMessage: "This is private message for signer",
    formFields: formFieldCollections,
    locale: Locales.EN);

var signer1 = new DocumentSigner(
    signerName: "Cilian",
    signerType: SignerType.Signer,
    signerEmail: "[email protected]",
    formFields: formFieldCollections1,
    locale: Locales.EN);    

var documentSigners = new List<DocumentSigner>()
{
    signer,
    signer1
};

var sendForSign = new SendForSign()
{
    Title = "Sample Document",
    HideDocumentId = false,
    Signers = documentSigners,
    Files = filesToUpload,
};
var documentCreated = documentClient.SendDocument(sendForSign);
import requests
import json

url = "https://api.boldsign.com/v1/document/send"

signer_data = {
    "name": "Hanky",
    "emailAddress": "[email protected]",
    "privateMessage": "This is private message for signer",
    "signerType": "Signer",
    "signerRole": "Signer",
    "formFields": [
        {
            "id": "Signature",
            "name": "Signature",
            "fieldType": "Signature",
            "pageNumber": 1,
            "bounds": {
                "x": 100,
                "y": 100,
                "width": 125,
                "height": 25
            },
            "isRequired": True
        }
    ],
    "locale": "EN"
}

signer_data1 = {
    "name": "Cilian",
    "emailAddress": "[email protected]",
    "signerType": "Signer",
    "signerRole": "Signer",
    "formFields": [
        {
            "id": "Signature1",
            "name": "Signature",
            "fieldType": "Signature",
            "pageNumber": 1,
            "bounds": {
                "x": 100,
                "y": 150,
                "width": 125,
                "height": 25
            },
            "isRequired": True
        }
    ],
    "locale": "EN"
}

payload = {
    'Signers': [json.dumps(signer_data), json.dumps(signer_data1)],
    'Title': "Sample Document"
}

files = [
    ('Files', ('{Your file name}', open('{Your file path}', 'rb'), 'application/pdf'))
]

headers = {
    'accept': 'application/json',
    'X-API-KEY': '{Your API key}'
}

response = requests.post(url, headers=headers, data=payload, files=files)

print(response.text)
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
let data = new FormData();
data.append('Signers', '{\r\n  "name": "hanky",\r\n  "emailAddress": "[email protected]",\r\n  "signerType": "Signer",\r\n  "signerRole": "Signer",\r\n,\r\n  "privateMessage": "This is private message for signer",\r\n  "formFields": [\r\n    {\r\n      "id": "Signature",\r\n      "name": "Signature",\r\n      "fieldType": "Signature",\r\n      "pageNumber": 1,\r\n      "bounds": {\r\n        "x": 100,\r\n        "y": 100,\r\n        "width": 125,\r\n        "height": 25\r\n      },\r\n  "isRequired": true\r\n}\r\n  ],\r\n  "locale": "EN"\r\n}');
data.append('Title', "Sample Document");
data.append('Signers', '{\r\n  "name": "cilian",\r\n  "emailAddress": "[email protected]",\r\n  "signerType": "Signer",\r\n  "signerRole": "Signer",\r\n  "formFields": [\r\n    {\r\n      "id": "Signature1",\r\n      "name": "Signature",\r\n      "fieldType": "Signature",\r\n      "pageNumber": 1,\r\n      "bounds": {\r\n        "x": 100,\r\n        "y": 150,\r\n        "width": 125,\r\n        "height": 25\r\n      },\r\n  "isRequired": true\r\n}\r\n  ],\r\n  "locale": "EN"\r\n}');
data.append('Title', "Sample Document");
data.append('Files', fs.createReadStream('{Your file path}'));

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://api.boldsign.com/v1/document/send',
  headers: { 
    'accept': 'application/json', 
    'X-API-KEY': '{Your API key}', 
    ...data.getHeaders()
  },
  data : data
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});
<?php
require_once "vendor/autoload.php";
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
use \GuzzleHttp\Psr7\Utils;
$client = new Client([
    'verify' => false, // Disable SSL verification
]);
$headers = [
  'accept' => 'application/json',
  'X-API-KEY' => '{Your API Key}'
];
$options = [
  'multipart' => [
    [
      'name' => 'Signers',
      'contents' => '{
        "name": "David",
        "emailAddress": "[email protected]",
        "signerType": "Signer",
        "privateMessage" : "This is private message for signer",
        "formFields": [
           {
              "id": "Signature",
              "fieldType": "Signature",
              "pageNumber": 1,
              "bounds": {
                "x": 100,
                "y": 100,
                "width": 125,
                "height": 25
                  },
              "isRequired": true
            }
        ],
        "locale": "EN"
      }'
    ],
    [
      'name' => 'Signers',
      'contents' => '{
        "name": "Henry",
        "emailAddress": "[email protected]",
        "signerType": "Signer",
        "formFields": [
           {
                "id": "Signature1",
                "fieldType": "Signature",
                "pageNumber": 1,
                "bounds": {
                  "x": 100,
                  "y": 150,
                  "width": 125,
                  "height": 25
                   },
      "isRequired": true
    }
  ],
  "locale": "EN"
}'
    ],
    [
      'name' => 'Title',
      'contents' => 'Sample'
    ],
    [
      'name' => 'Files',
      'contents' => Utils::tryFopen('{Your File Path}', 'r'),
      'filename' => '{Your File name}',
      'headers'  => [
        'Content-Type' => 'application/pdf'
      ]
    ]
]];
$request = new Request('POST', 'https://api.boldsign.com/v1/document/send', $headers);
$res = $client->sendAsync($request, $options)->wait();
echo $res->getBody();
?>

In the example above, set the privateMessage property with the desired message you want to send to each signer. By executing any of the provided code examples, the document will be sent for signature, and each signer will receive the specified private message intended for them.