Articles in this section
Category / Section

How to set signing order when using templates via API?

Published:
5 mins read

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.

Was this article useful?
Like
Dislike
Help us improve this page
Please provide feedback or comments
Access denied
Access denied