How to set signing order when using templates via API?
When using templates, you can enforce a specific signing sequence by enabling the signing order option. To do this, set the enableSigningOrder
property to true
and assign appropriate values to SignerOrder
for each recipient. This ensures that signers receive the email and sign the document in the defined order.
Below are code snippets demonstrating how to set the signing order when using templates via API:
cURL
curl -X 'POST' \
'https://api.boldsign.com/v1/template/send?templateId=b8085b47-xxxx-47f8-xxxx-cb0acfe2d916' \
-H 'accept: application/json' \
-H 'X-API-KEY: {your API key}' \
-H 'Content-Type: application/json' \
-d '{
"title": "Invitation form",
"message": "Kindly review and sign this.",
"enableSigningOrder": true,
"roles": [
{
"roleIndex": 1,
"signerName": "David",
"signerEmail": "david@cubeflakes.com",
"signerOrder": 2,
"signerType": "Signer",
"deliveryMode": "Email",
"signerRole": "Landlord"
},
{
"roleIndex": 2,
"signerName": "Emma",
"signerEmail": "emma@cubeflakes.com",
"signerOrder": 1,
"signerType": "Signer",
"deliveryMode": "Email",
"signerRole": "Tenant"
}
]
}'
.NET
var apiClient = new ApiClient("https://api.boldsign.com", "Your API Key");
var templateClient = new TemplateClient(apiClient);
var role1 = new Roles(
roleSignerName: "Mark Tenant",
roleSignerEmailAddress: "mark@cubeflakes.com",
roleSignerIndex: 1,
signerOrder: 2,
locale: Locales.EN
);
var role2 = new Roles(
roleSignerName: "Alex Admin",
roleSignerEmailAddress: "alex@cubeflakes.com",
roleSignerIndex: 2,
signerOrder: 1,
locale: Locales.EN
);
var roles = new List<Roles> { role1, role2 };
var sendForSignFromTemplate = new SendForSignFromTemplate()
{
TemplateId = "5f29bb2b-b9d8-7420-8a94-5d1372106fab",
Roles = roles,
EnableSigningOrder = true,
};
try
{
var documentCreated = templateClient.SendUsingTemplate(sendForSignFromTemplate);
Console.WriteLine("Document Sent! Document ID: " + documentCreated.DocumentId);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
}
Python
import boldsign
configuration = boldsign.Configuration(api_key="Your API Key")
with boldsign.ApiClient(configuration) as api_client:
template_api = boldsign.TemplateApi(api_client)
roles = [
boldsign.Role(
role_index=1,
signer_name="richard",
signer_email="richard@cubeflakes.com",
signer_order=1,
signer_type="Signer",
role="Admin"
),
boldsign.Role(
role_index=2,
signer_name="emma",
signer_email="emma@cubeflakes.com",
signer_order=2,
signer_type="Signer",
role="Tenant"
)
]
send_for_sign_from_template = boldsign.SendForSignFromTemplateForm(
roles=roles,
enable_signing_order=True
)
send_using_template_response = template_api.send_using_template(
template_id="6f29bb2b-b8d8-4420-8a54-5d1332106fab",
send_for_sign_from_template_form=send_for_sign_from_template
)
print(send_using_template_response)
PHP
<?php
require_once "vendor/autoload.php";
use BoldSign\Configuration;
use BoldSign\Api\TemplateApi;
use BoldSign\Model\{Role, SendForSignFromTemplateForm};
$config = new Configuration();
$config->setApiKey('YOUR_API_KEY');
$template_api = new TemplateApi($config);
$role1 = new Role();
$role1->setRoleIndex(2);
$role1->setSignerName('Emma');
$role1->setSignerEmail('emma@cubeflakes.com');
$role1->setSignerOrder(1);
$role1->setSignerType('Signer');
$role1->setDeliveryMode('Email');
$role1->setSignerRole('Tenant');
$role2 = new Role();
$role2->setRoleIndex(1);
$role2->setSignerName('David');
$role2->setSignerEmail('david@cubeflakes.com');
$role2->setSignerOrder(2);
$role2->setSignerType('Signer');
$role2->setDeliveryMode('Email');
$role2->setSignerRole('Landlord');
$send_for_sign_from_template = new SendForSignFromTemplateForm();
$send_for_sign_from_template->setTitle('Invitation form');
$send_for_sign_from_template->setMessage('Kindly review and sign this.');
$send_for_sign_from_template->setEnableSigningOrder(true);
$send_for_sign_from_template->setRoles([$role1, $role2]);
$document_created = $template_api->sendUsingTemplate('YOUR_TEMPLATE_ID', $send_for_sign_from_template);
Java
ApiClient client = Configuration.getDefaultApiClient();
client.setApiKey("YOUR_API_KEY");
TemplateApi templateApi = new TemplateApi(client);
Role role1 = new Role();
role1.setRoleIndex(2);
role1.setSignerName("Emma");
role1.setSignerEmail("emma@cubeflakes.com");
role1.setSignerOrder(1);
role1.setSignerType(Role.SignerTypeEnum.SIGNER);
role1.setDeliveryMode("Email");
role1.setSignerRole("Tenant");
Role role2 = new Role();
role2.setRoleIndex(1);
role2.setSignerName("David");
role2.setSignerEmail("david@cubeflakes.com");
role2.setSignerOrder(2);
role2.setSignerType(Role.SignerTypeEnum.SIGNER);
role2.setDeliveryMode("Email");
role2.setSignerRole("Landlord");
SendForSignFromTemplateForm sendForSignFromTemplate = new SendForSignFromTemplateForm();
sendForSignFromTemplate.setTitle("Invitation form");
sendForSignFromTemplate.setMessage("Kindly review and sign this.");
sendForSignFromTemplate.setEnableSigningOrder(true);
sendForSignFromTemplate.setRoles(Arrays.asList(role1, role2));
DocumentCreated documentCreated = templateApi.sendUsingTemplate("YOUR_TEMPLATE_ID", sendForSignFromTemplate);
System.out.println("Document sent, ID: " + documentCreated.getDocumentId());
}
}
Node.js
import { TemplateApi, Role, SendForSignFromTemplateForm } from "boldsign";
const templateApi = new TemplateApi();
templateApi.setApiKey("YOUR_API_KEY");
const role1 = new Role();
role1.roleIndex = 1;
role1.signerName = "Richard";
role1.signerEmail = "richard@cubeflakes.com";
role1.signerType = Role.SignerTypeEnum.Signer;
role1.signerOrder = 2;
const role2 = new Role();
role2.roleIndex = 2;
role2.signerName = "Alex";
role2.signerEmail = "alex@cubeflakes.com";
role2.signerType = Role.SignerTypeEnum.Signer;
role2.signerOrder = 1;
const sendForSignFromTemplate = new SendForSignFromTemplateForm();
sendForSignFromTemplate.roles = [role1, role2];
sendForSignFromTemplate.enableSigningOrder = true;
templateApi.sendUsingTemplate(" Your template Id", sendForSignFromTemplate)
.then(response => {
console.log("Success:", response);
})
.catch(error => {
console.error("Error:", error.response?.data || error.message || error);
});
In the above code examples, make sure the EnableSigningOrder
property is set to true
and configure the signerOrder
values according to your desired sequence. Once the code is executed, the document will be created, and an email will be sent to the first signer. After the first signer completes the signing process, the next signer in the defined order will receive their email invitation.