Send a document for signature
curl --request POST \
--url https://app.myhero.so/signature/{documentId}/requests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipients": [
{
"name": "<string>",
"email": "<string>",
"nodeIds": [
"<string>"
],
"order": 2
}
],
"message": "<string>",
"fields": [
{
"key": "<string>",
"recipientEmail": "<string>",
"required": true
}
]
}
'import requests
url = "https://app.myhero.so/signature/{documentId}/requests"
payload = {
"recipients": [
{
"name": "<string>",
"email": "<string>",
"nodeIds": ["<string>"],
"order": 2
}
],
"message": "<string>",
"fields": [
{
"key": "<string>",
"recipientEmail": "<string>",
"required": True
}
]
}
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({
recipients: [{name: '<string>', email: '<string>', nodeIds: ['<string>'], order: 2}],
message: '<string>',
fields: [{key: '<string>', recipientEmail: '<string>', required: true}]
})
};
fetch('https://app.myhero.so/signature/{documentId}/requests', 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://app.myhero.so/signature/{documentId}/requests",
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([
'recipients' => [
[
'name' => '<string>',
'email' => '<string>',
'nodeIds' => [
'<string>'
],
'order' => 2
]
],
'message' => '<string>',
'fields' => [
[
'key' => '<string>',
'recipientEmail' => '<string>',
'required' => true
]
]
]),
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://app.myhero.so/signature/{documentId}/requests"
payload := strings.NewReader("{\n \"recipients\": [\n {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"nodeIds\": [\n \"<string>\"\n ],\n \"order\": 2\n }\n ],\n \"message\": \"<string>\",\n \"fields\": [\n {\n \"key\": \"<string>\",\n \"recipientEmail\": \"<string>\",\n \"required\": true\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://app.myhero.so/signature/{documentId}/requests")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recipients\": [\n {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"nodeIds\": [\n \"<string>\"\n ],\n \"order\": 2\n }\n ],\n \"message\": \"<string>\",\n \"fields\": [\n {\n \"key\": \"<string>\",\n \"recipientEmail\": \"<string>\",\n \"required\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.myhero.so/signature/{documentId}/requests")
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 \"recipients\": [\n {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"nodeIds\": [\n \"<string>\"\n ],\n \"order\": 2\n }\n ],\n \"message\": \"<string>\",\n \"fields\": [\n {\n \"key\": \"<string>\",\n \"recipientEmail\": \"<string>\",\n \"required\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {}
}{
"error": "<string>",
"message": "<string>",
"details": [
"<unknown>"
]
}{
"error": "<string>",
"message": "<string>",
"details": [
"<unknown>"
]
}{
"error": "<string>",
"message": "<string>",
"details": [
"<unknown>"
]
}Signatures
Send a document for signature
Sends the document to people outside the workspace to sign from an emailed link, without an account.
Each recipient is given the signature blocks only they may sign.
The document is copied as it stands and made read-only until the request completes or closes; recipients see that copy, never the live document. fields hands empty variables (keys from the fields route) to recipients to fill in; their values are written into the table once everyone has signed.
Requires edit access.
POST
/
signature
/
{documentId}
/
requests
Send a document for signature
curl --request POST \
--url https://app.myhero.so/signature/{documentId}/requests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipients": [
{
"name": "<string>",
"email": "<string>",
"nodeIds": [
"<string>"
],
"order": 2
}
],
"message": "<string>",
"fields": [
{
"key": "<string>",
"recipientEmail": "<string>",
"required": true
}
]
}
'import requests
url = "https://app.myhero.so/signature/{documentId}/requests"
payload = {
"recipients": [
{
"name": "<string>",
"email": "<string>",
"nodeIds": ["<string>"],
"order": 2
}
],
"message": "<string>",
"fields": [
{
"key": "<string>",
"recipientEmail": "<string>",
"required": True
}
]
}
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({
recipients: [{name: '<string>', email: '<string>', nodeIds: ['<string>'], order: 2}],
message: '<string>',
fields: [{key: '<string>', recipientEmail: '<string>', required: true}]
})
};
fetch('https://app.myhero.so/signature/{documentId}/requests', 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://app.myhero.so/signature/{documentId}/requests",
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([
'recipients' => [
[
'name' => '<string>',
'email' => '<string>',
'nodeIds' => [
'<string>'
],
'order' => 2
]
],
'message' => '<string>',
'fields' => [
[
'key' => '<string>',
'recipientEmail' => '<string>',
'required' => true
]
]
]),
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://app.myhero.so/signature/{documentId}/requests"
payload := strings.NewReader("{\n \"recipients\": [\n {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"nodeIds\": [\n \"<string>\"\n ],\n \"order\": 2\n }\n ],\n \"message\": \"<string>\",\n \"fields\": [\n {\n \"key\": \"<string>\",\n \"recipientEmail\": \"<string>\",\n \"required\": true\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://app.myhero.so/signature/{documentId}/requests")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recipients\": [\n {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"nodeIds\": [\n \"<string>\"\n ],\n \"order\": 2\n }\n ],\n \"message\": \"<string>\",\n \"fields\": [\n {\n \"key\": \"<string>\",\n \"recipientEmail\": \"<string>\",\n \"required\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.myhero.so/signature/{documentId}/requests")
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 \"recipients\": [\n {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"nodeIds\": [\n \"<string>\"\n ],\n \"order\": 2\n }\n ],\n \"message\": \"<string>\",\n \"fields\": [\n {\n \"key\": \"<string>\",\n \"recipientEmail\": \"<string>\",\n \"required\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {}
}{
"error": "<string>",
"message": "<string>",
"details": [
"<unknown>"
]
}{
"error": "<string>",
"message": "<string>",
"details": [
"<unknown>"
]
}{
"error": "<string>",
"message": "<string>",
"details": [
"<unknown>"
]
}Authorizations
HERO personal access token
Path Parameters
Minimum string length:
1Body
application/json
Response
201 response
Show child attributes
Show child attributes