curl --request POST \
--url https://restapi.sign.plus/v2/template/{template_id}/signing_steps \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signing_steps": [
{
"recipients": [
{
"id": "<string>",
"uid": "<string>",
"name": "<string>",
"email": "<string>"
}
]
}
]
}
'import requests
url = "https://restapi.sign.plus/v2/template/{template_id}/signing_steps"
payload = { "signing_steps": [{ "recipients": [
{
"id": "<string>",
"uid": "<string>",
"name": "<string>",
"email": "<string>"
}
] }] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
signing_steps: [
{
recipients: [{id: '<string>', uid: '<string>', name: '<string>', email: '<string>'}]
}
]
})
};
fetch('https://restapi.sign.plus/v2/template/{template_id}/signing_steps', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://restapi.sign.plus/v2/template/{template_id}/signing_steps",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'signing_steps' => [
[
'recipients' => [
[
'id' => '<string>',
'uid' => '<string>',
'name' => '<string>',
'email' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://restapi.sign.plus/v2/template/{template_id}/signing_steps"
payload := strings.NewReader("{\n \"signing_steps\": [\n {\n \"recipients\": [\n {\n \"id\": \"<string>\",\n \"uid\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://restapi.sign.plus/v2/template/{template_id}/signing_steps")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"signing_steps\": [\n {\n \"recipients\": [\n {\n \"id\": \"<string>\",\n \"uid\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://restapi.sign.plus/v2/template/{template_id}/signing_steps")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"signing_steps\": [\n {\n \"recipients\": [\n {\n \"id\": \"<string>\",\n \"uid\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"comment": "<string>",
"pages": 123,
"created_at": 123,
"updated_at": 123,
"expiration_delay": 123,
"num_recipients": 123,
"signing_steps": [
{
"recipients": [
{
"id": "<string>",
"uid": "<string>",
"name": "<string>",
"email": "<string>"
}
]
}
],
"documents": [
{
"id": "<string>",
"name": "<string>",
"filename": "<string>",
"page_count": 123,
"pages": [
{
"width": 123,
"height": 123
}
]
}
],
"notification": {
"subject": "<string>",
"message": "<string>",
"reminder_interval": 123
},
"dynamic_fields": [
"<string>"
],
"attachments": {
"settings": {
"visible_to_recipients": true
},
"recipients": [
{
"recipient_id": "<string>",
"recipient_name": "<string>",
"placeholders": [
{
"recipient_id": "<string>",
"id": "<string>",
"name": "<string>",
"hint": "<string>",
"required": true,
"multiple": true,
"files": [
{
"id": "<string>",
"name": "<string>",
"size": 123,
"mimetype": "<string>"
}
]
}
]
}
]
}
}Add template signing steps
curl --request POST \
--url https://restapi.sign.plus/v2/template/{template_id}/signing_steps \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signing_steps": [
{
"recipients": [
{
"id": "<string>",
"uid": "<string>",
"name": "<string>",
"email": "<string>"
}
]
}
]
}
'import requests
url = "https://restapi.sign.plus/v2/template/{template_id}/signing_steps"
payload = { "signing_steps": [{ "recipients": [
{
"id": "<string>",
"uid": "<string>",
"name": "<string>",
"email": "<string>"
}
] }] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
signing_steps: [
{
recipients: [{id: '<string>', uid: '<string>', name: '<string>', email: '<string>'}]
}
]
})
};
fetch('https://restapi.sign.plus/v2/template/{template_id}/signing_steps', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://restapi.sign.plus/v2/template/{template_id}/signing_steps",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'signing_steps' => [
[
'recipients' => [
[
'id' => '<string>',
'uid' => '<string>',
'name' => '<string>',
'email' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://restapi.sign.plus/v2/template/{template_id}/signing_steps"
payload := strings.NewReader("{\n \"signing_steps\": [\n {\n \"recipients\": [\n {\n \"id\": \"<string>\",\n \"uid\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://restapi.sign.plus/v2/template/{template_id}/signing_steps")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"signing_steps\": [\n {\n \"recipients\": [\n {\n \"id\": \"<string>\",\n \"uid\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://restapi.sign.plus/v2/template/{template_id}/signing_steps")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"signing_steps\": [\n {\n \"recipients\": [\n {\n \"id\": \"<string>\",\n \"uid\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"comment": "<string>",
"pages": 123,
"created_at": 123,
"updated_at": 123,
"expiration_delay": 123,
"num_recipients": 123,
"signing_steps": [
{
"recipients": [
{
"id": "<string>",
"uid": "<string>",
"name": "<string>",
"email": "<string>"
}
]
}
],
"documents": [
{
"id": "<string>",
"name": "<string>",
"filename": "<string>",
"page_count": 123,
"pages": [
{
"width": 123,
"height": 123
}
]
}
],
"notification": {
"subject": "<string>",
"message": "<string>",
"reminder_interval": 123
},
"dynamic_fields": [
"<string>"
],
"attachments": {
"settings": {
"visible_to_recipients": true
},
"recipients": [
{
"recipient_id": "<string>",
"recipient_name": "<string>",
"placeholders": [
{
"recipient_id": "<string>",
"id": "<string>",
"name": "<string>",
"hint": "<string>",
"required": true,
"multiple": true,
"files": [
{
"id": "<string>",
"name": "<string>",
"size": 123,
"mimetype": "<string>"
}
]
}
]
}
]
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
List of signing steps
Show child attributes
Show child attributes
Response
Signing steps added successfully
Unique identifier of the template
Name of the template
Comment for the template
Total number of pages in the template
Legal level of the envelope (SES is Simple Electronic Signature, QES_EIDAS is Qualified Electronic Signature, QES_ZERTES is Qualified Electronic Signature with Zertes)
SES, QES_EIDAS, QES_ZERTES Unix timestamp of the creation date
Unix timestamp of the last modification date
Expiration delay added to the current time when an envelope is created from this template
Number of recipients in the envelope
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
List of dynamic fields
Show child attributes
Show child attributes