How to create a Template using BoldSign API?
If you frequently need to send the same contracts to different people for signing, templates can help you save time. Once you create a template, you can send contracts in less than a minute using the template.
Below are examples of how to create a template in various programming languages:
Code snippet
curl -X 'POST' \ 'https://api.boldsign.com/v1/template/create' \
-H 'accept: application/json' \
-H 'X-API-KEY: {your API key}' \
-H 'Content-Type: multipart/form-data' \
-F 'DocumentMessage=document message for signers' \
-F 'Files=@{your file};type=application/pdf' \
-F 'Title=title of the template' \
-F 'AllowMessageEditing=true' \
-F 'Description=testingDescription' \
-F 'DocumentTitle=title of the document' \
-F 'Roles={
"name": "Manager",
"index": 1,
"defaultSignerName": "Alex Gayle",
"defaultSignerEmail": "[email protected]",
"signerOrder": 1,
"signerType": "Signer",
"formFields": [
{
"id": "sign_id",
"fieldType": "Signature",
"pageNumber": 1,
"bounds": {
"x": 50,
"y": 100,
"width": 100,
"height": 60
},
"isRequired": true
}
]
}'
var apiClient = new ApiClient("https://api.boldsign.com", "API-KEY");
var templateClient = new TemplateClient(apiClient);
var documentFilePath = new DocumentFilePath
{
ContentType = "application/pdf",
FilePath = "{file path}",
};
var filesToUpload = new List<IDocumentFile>
{
documentFilePath,
};
var signatureField = new FormField(
id: "sign_id",
type: Type.Signature,
pageNumber: 1,
bounds: new Rectangle(x: 50, y: 50, width: 200, height: 30));
var formFieldsCollections = new List<FormField>
{
signatureField,
};
var templateRole = new TemplateRole(
roleIndex: 1,
name: "Manager",
defaultSignerName: "Alex Gayle",
defaultSignerEmail: "[email protected]",
signerOrder: 1,
signerType: SignerType.Signer,
formFields: formFieldsCollections,
locale: Locales.EN);
var roles = new List<TemplateRole>
{
templateRole,
};
var templateRequest = new CreateTemplateRequest()
{
Title = "title of the template",
DocumentMessage = "document message for signers",
Files = filesToUpload,
Description = "testingDescription",
DocumentTitle = "title of the document",
Roles = roles
};
var templateCreated = templateClient.CreateTemplate(templateRequest);
import requests
import json
url = "https://api.boldsign.com/v1/template/create"
payload = {
"AllowNewRoles": "true",
"DocumentMessage": "document message for signers",
"Title": "title of the template",
"AllowMessageEditing": "true",
"Description": "testingDescription",
"DocumentTitle": "title of the document",
"Roles": json.dumps(
{
"name": "Manager",
"index": 1,
"defaultSignerName": "Alex Gayle",
"defaultSignerEmail": "[email protected]",
"signerOrder": 1,
"signerType": "Signer",
"locale": "EN",
"imposeAuthentication": "None",
"deliveryMode": "Email",
"formFields": [
{
"id": "sign_id",
"name": "sign",
"fieldType": "Signature",
"pageNumber": 1,
"bounds": {"x": 50, "y": 100, "width": 100, "height": 60},
"isRequired": True
}
],
"allowRoleEdit": True,
"allowRoleDelete": True,
}
),
}
files = [
("Files", ("file", open("{your file}", "rb"), "application/msword"))
]
headers = {
"accept": "application/json",
"X-API-KEY": "{your api ky}",
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('AllowNewRoles', 'true');
form.append('DocumentMessage', 'document message for signers');
formData.append('Files', fs.createReadStream(filePath), {
filename: 'yourfilename.pdf',
contentType: 'application/pdf'
});
form.append('Title', 'title of the template');
form.append('AllowMessageEditing', 'true');
form.append('Description', 'testingDescription');
form.append('DocumentTitle', 'title of the document');
form.append('Roles', '{\n "name": "Manager",\n "index": 1,\n "defaultSignerName": "Alex Gayle",\n "defaultSignerEmail": "[email protected]",\n "signerOrder": 1,\n "signerType": "Signer",\n "locale": "EN",\n "imposeAuthentication": "None",\n "deliveryMode": "Email",\n "formFields": [\n {\n "id": "sign_id",\n "name": "sign",\n "fieldType": "Signature",\n "pageNumber": 1,\n "bounds": {\n "x": 50,\n "y": 100,\n "width": 100,\n "height": 60\n },\n "isRequired": true\n }\n ],\n "allowRoleEdit": true,\n "allowRoleDelete": true\n}');
const response = await axios.post(
' https://api.boldsign.com/v1/template/create',
form,
{
headers: {
...form.getHeaders(),
'accept': 'application/json',
'X-API-KEY': '{API-KEY}',
'Content-Type': 'multipart/form-data'
}
}
);
<?php
require_once "vendor/autoload.php";
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new GuzzleHttp\Client([ 'verify' => false, ]);
$headers = [
'accept' => 'application/json',
'X-API-KEY' => '{your API key}'
];
$options = [
'multipart' => [
[
'name' => 'DocumentMessage',
'contents' => 'document message for signers'
],
[
'name' => 'Files',
'contents' => Utils::tryFopen('/path/to/file', 'r'),
'filename' => '/path/to/file',
'headers' => [
'Content-Type' => '<Content-type header>'
]
],
[
'name' => 'Title',
'contents' => 'title of the template'
],
[
'name' => 'AllowMessageEditing',
'contents' => 'true'
],
[
'name' => 'Description',
'contents' => 'testingDescription'
],
[
'name' => 'DocumentTitle',
'contents' => 'title of the document'
],
[
'name' => 'Roles',
'contents' => '{
"name": "Manager",
"index": 1,
"defaultSignerName": "Alex Gayle",
"defaultSignerEmail": "[email protected]",
"signerOrder": 1,
"signerType": "Signer",
"formFields": [
{
"id": "sign_id",
"fieldType": "Signature",
"pageNumber": 1,
"bounds": {
"x": 50,
"y": 100,
"width": 100,
"height": 60
},
"isRequired": true
}
]
}'
]
]];
$request = new Request('POST', 'https://api.boldsign.com/v1/template/create', $headers);
$res = $client->sendAsync($request, $options)->wait();
echo $res->getBody();
In the provided code example, provide values for Roleindex, Rolename. Replace the values for API KEY with the correct value, Filewith your correct file path. When the above codes are executed, a template is created successfully with the values provided and templateId is returned.