Get a template
curl --request GET \
--url https://my.flowsign.app/api/v1/templates/{templateId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://my.flowsign.app/api/v1/templates/{templateId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://my.flowsign.app/api/v1/templates/{templateId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://my.flowsign.app/api/v1/templates/{templateId}';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://my.flowsign.app/api/v1/templates/{templateId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://my.flowsign.app/api/v1/templates/{templateId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://my.flowsign.app/api/v1/templates/{templateId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$response = Invoke-WebRequest -Uri 'https://my.flowsign.app/api/v1/templates/{templateId}' -Method GET -Headers $headers{
"data": {
"id": "kX9dQ2mB7pLw",
"name": "Employment agreement",
"description": "Standard individual employment agreement for new hires.",
"status": "ACTIVE",
"tags": [
"HR",
"Onboarding"
],
"signingMode": "SEQUENTIAL",
"roles": [
{
"id": "cmg3k2v8a0001s7p4d9x1qz2h",
"name": "Employee",
"actionType": "SIGNER",
"order": 0,
"deliveryDefault": "EMAIL",
"hostRole": "SENDER",
"hostUserIds": [],
"hostGroupIds": []
}
],
"documents": [
{
"id": "cmg4v8q2k0003s7xhq1w8n5r7",
"title": "Employment agreement",
"pageCount": 4,
"order": 0,
"isSupplemental": false,
"kind": "STANDARD",
"variables": [
{
"ref": "v_3kq9x",
"key": "start_date",
"label": "Start date",
"type": "TEXT",
"source": "SENDER",
"defaultValue": "2026-10-01",
"isRequired": true,
"dropdownOptions": [],
"binding": {
"kind": "recipient",
"roleId": "cmg3k2v8a0001s7p4d9x1qz2h",
"attribute": "name"
}
}
]
}
],
"fields": [
{
"id": "cmg1p4k2a000bv9x0f2r6s8u4",
"pageNumber": 1,
"fieldType": "signature",
"position": {
"x": 0.12,
"y": 0.78
},
"size": {
"width": 0.28,
"height": 0.05
},
"isRequired": true,
"placeholder": "Sign here",
"dropdownOptions": [
"Full time",
"Part time",
"Casual"
],
"radioGroup": "employment-type",
"documentId": "cmg3k5r1c0003s7p4h2m8tb7k",
"roleId": "cmg3k2v8a0001s7p4d9x1qz2h",
"defaultValue": "Studio Phoenix Limited"
}
],
"mergeFields": [
{
"id": "cmg3k8w4g0005s7p4c9v2mx8r",
"key": "start_date",
"label": "Start date",
"description": "The employee's first day of work.",
"source": "SENDER",
"binding": {
"kind": "recipient",
"roleId": "cmg3k2v8a0001s7p4d9x1qz2h",
"attribute": "name"
},
"type": "DATE",
"options": [],
"isRequired": true,
"defaultValue": "2026-10-01"
}
],
"workflowQuestions": [
{
"id": "q_probation",
"question": "Is there a probation period?",
"answerMode": "choice",
"answers": [
{
"id": "yes",
"label": "Yes",
"isDefault": false
}
]
}
],
"documentQuestions": [
{
"id": "cmg3k9y2h0006s7p4e4k7nq1t",
"documentId": "cmg3k5r1c0003s7p4h2m8tb7k",
"question": "Does the role include a company vehicle?",
"askedWhen": {
"questionId": "cmg3k9y2h0008s7p4j5w1kd9m",
"optionId": "cmg3k9y2h0009s7p4l7c4fs2q"
},
"options": [
{
"id": "cmg3k9y2h0007s7p4g8d3rp6v",
"label": "Yes",
"isDefault": false
}
]
}
],
"emailSubject": "Your employment agreement with Studio Phoenix Limited",
"emailMessage": "Kia ora {{employee_name}}, please review and sign your agreement.",
"expirationDays": 30,
"reminderIntervalDays": 3,
"expiryWarningDays": 5,
"brandColor": "#1a2b3c",
"createdAt": "2026-09-14T02:15:30.000Z",
"updatedAt": "2026-09-21T23:48:05.000Z",
"metadata": {
"cost_centre": "HR-AKL",
"region": "Auckland"
}
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}Templates
Get a template
Returns the full template with its roles, documents, fields, merge fields, questions and email, reminder and expiry settings. Requires USE template access.
GET
https://my.flowsign.app
/
api
/
v1
/
templates
/
{templateId}
Get a template
curl --request GET \
--url https://my.flowsign.app/api/v1/templates/{templateId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://my.flowsign.app/api/v1/templates/{templateId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://my.flowsign.app/api/v1/templates/{templateId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://my.flowsign.app/api/v1/templates/{templateId}';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://my.flowsign.app/api/v1/templates/{templateId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://my.flowsign.app/api/v1/templates/{templateId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://my.flowsign.app/api/v1/templates/{templateId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$response = Invoke-WebRequest -Uri 'https://my.flowsign.app/api/v1/templates/{templateId}' -Method GET -Headers $headers{
"data": {
"id": "kX9dQ2mB7pLw",
"name": "Employment agreement",
"description": "Standard individual employment agreement for new hires.",
"status": "ACTIVE",
"tags": [
"HR",
"Onboarding"
],
"signingMode": "SEQUENTIAL",
"roles": [
{
"id": "cmg3k2v8a0001s7p4d9x1qz2h",
"name": "Employee",
"actionType": "SIGNER",
"order": 0,
"deliveryDefault": "EMAIL",
"hostRole": "SENDER",
"hostUserIds": [],
"hostGroupIds": []
}
],
"documents": [
{
"id": "cmg4v8q2k0003s7xhq1w8n5r7",
"title": "Employment agreement",
"pageCount": 4,
"order": 0,
"isSupplemental": false,
"kind": "STANDARD",
"variables": [
{
"ref": "v_3kq9x",
"key": "start_date",
"label": "Start date",
"type": "TEXT",
"source": "SENDER",
"defaultValue": "2026-10-01",
"isRequired": true,
"dropdownOptions": [],
"binding": {
"kind": "recipient",
"roleId": "cmg3k2v8a0001s7p4d9x1qz2h",
"attribute": "name"
}
}
]
}
],
"fields": [
{
"id": "cmg1p4k2a000bv9x0f2r6s8u4",
"pageNumber": 1,
"fieldType": "signature",
"position": {
"x": 0.12,
"y": 0.78
},
"size": {
"width": 0.28,
"height": 0.05
},
"isRequired": true,
"placeholder": "Sign here",
"dropdownOptions": [
"Full time",
"Part time",
"Casual"
],
"radioGroup": "employment-type",
"documentId": "cmg3k5r1c0003s7p4h2m8tb7k",
"roleId": "cmg3k2v8a0001s7p4d9x1qz2h",
"defaultValue": "Studio Phoenix Limited"
}
],
"mergeFields": [
{
"id": "cmg3k8w4g0005s7p4c9v2mx8r",
"key": "start_date",
"label": "Start date",
"description": "The employee's first day of work.",
"source": "SENDER",
"binding": {
"kind": "recipient",
"roleId": "cmg3k2v8a0001s7p4d9x1qz2h",
"attribute": "name"
},
"type": "DATE",
"options": [],
"isRequired": true,
"defaultValue": "2026-10-01"
}
],
"workflowQuestions": [
{
"id": "q_probation",
"question": "Is there a probation period?",
"answerMode": "choice",
"answers": [
{
"id": "yes",
"label": "Yes",
"isDefault": false
}
]
}
],
"documentQuestions": [
{
"id": "cmg3k9y2h0006s7p4e4k7nq1t",
"documentId": "cmg3k5r1c0003s7p4h2m8tb7k",
"question": "Does the role include a company vehicle?",
"askedWhen": {
"questionId": "cmg3k9y2h0008s7p4j5w1kd9m",
"optionId": "cmg3k9y2h0009s7p4l7c4fs2q"
},
"options": [
{
"id": "cmg3k9y2h0007s7p4g8d3rp6v",
"label": "Yes",
"isDefault": false
}
]
}
],
"emailSubject": "Your employment agreement with Studio Phoenix Limited",
"emailMessage": "Kia ora {{employee_name}}, please review and sign your agreement.",
"expirationDays": 30,
"reminderIntervalDays": 3,
"expiryWarningDays": 5,
"brandColor": "#1a2b3c",
"createdAt": "2026-09-14T02:15:30.000Z",
"updatedAt": "2026-09-21T23:48:05.000Z",
"metadata": {
"cost_centre": "HR-AKL",
"region": "Auckland"
}
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}{
"error": "Missing permission: canSendPackages",
"details": {
"recipients.0.email": [
"Invalid email"
]
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
The workspace the key was issued for, as returned by GET /api/v1/workspaces. Optional: omitting it acts in the key's workspace, and any other id is rejected with 401.
Path Parameters
Response
Success
Show child attributes
Show child attributes
Was this page helpful?

