Reminders
Overview
The Reminders API allows you to manage reminders for document signing, including sending manual reminders and canceling scheduled automatic reminders. This is useful when you want to prompt users to complete their signing process or stop reminder notifications from being sent.
Sending Manual Reminders
API Endpoint
POST /management/signing/{ProcessKey}/signee/{SigneeKey}/remind
Authentication
This endpoint requires basic authentication. You need to include your API credentials in the request header:
Authorization: Basic base64(companyKey:ApiKey)
Where base64(companyKey:ApiKey)
is the Base64 encoding of your companyKey and ApiKey separated by a colon.
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ProcessKey | string | Yes | The unique identifier for the signing process |
SigneeKey | string | Yes | The unique identifier for the signee who will receive the reminder |
User | string | No | The email address of the user sending the reminder |
CommunicationDeliveryType | enum | Yes | The method to deliver the reminder: "None", "Email", or "Sms" |
IncludeUnsubscribe | boolean | No | Whether to include an unsubscribe link in email reminders (defaults to false) |
Path Parameters
- ProcessKey: The key of the signing process containing the document to be signed
- SigneeKey: The key of the signee who will receive the reminder
Note: If the specified signing process is part of a sequence, a reminder for the entire sequence will be sent instead.
Response
The API returns a string message indicating whether the reminder was successfully sent.
Response Codes
200 OK
: Reminder was successfully sent400 Bad Request
: The request parameters were invalid404 Not Found
: The signing process or signee could not be found500 Internal Server Error
: Server error
Examples for Sending Reminders
- cURL
- JavaScript
- C#
curl -X POST "https://onboarding.taktikal.is/management/signing/sp231f52f87d6f/signee/si7abef56540bd/remind" \
-H "Content-Type: application/json" \
-H "Authorization: Basic $(echo -n 'your_companyKey:your_ApiKey' | base64)" \
-d '{
"CommunicationDeliveryType": "Email",
"User": "your@email.com",
"IncludeUnsubscribe": true
}'
const sendReminder = async () => {
// Create basic auth credentials
const credentials = btoa("your_companyKey:your_ApiKey");
const processKey = "sp231f52f87d6f";
const signeeKey = "si7abef56540bd";
const response = await fetch(
`https://onboarding.taktikal.is/management/signing/${processKey}/signee/${signeeKey}/remind`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Basic ${credentials}`,
},
body: JSON.stringify({
CommunicationDeliveryType: "Email",
User: "your@email.com",
IncludeUnsubscribe: true,
}),
}
);
if (response.ok) {
const result = await response.text();
console.log("Reminder sent successfully:", result);
} else {
console.error("Failed to send reminder:", await response.text());
}
};
sendReminder();
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
public class ReminderService
{
private readonly HttpClient _httpClient;
private readonly string _baseUrl;
private readonly string _companyKey;
private readonly string _apiKey;
public ReminderService(string baseUrl, string companyKey, string apiKey)
{
_baseUrl = baseUrl;
_companyKey = companyKey;
_apiKey = apiKey;
_httpClient = new HttpClient();
// Set up basic authentication
var authValue = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{_companyKey}:{_apiKey}"));
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", authValue);
}
public enum CommunicationDeliveryType
{
None,
Email,
Sms
}
public class ReminderRequest
{
public CommunicationDeliveryType CommunicationDeliveryType { get; set; }
public string User { get; set; }
public bool IncludeUnsubscribe { get; set; }
}
public async Task<string> SendReminderAsync(string processKey, string signeeKey, ReminderRequest request)
{
var content = new StringContent(
JsonSerializer.Serialize(request),
Encoding.UTF8,
"application/json");
var response = await _httpClient.PostAsync(
$"{_baseUrl}/management/signing/{processKey}/signee/{signeeKey}/remind",
content);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
// Example usage
public async Task SendReminderExample()
{
var service = new ReminderService(
"https://onboarding.taktikal.is",
"your_companyKey",
"your_ApiKey");
var request = new ReminderService.ReminderRequest
{
CommunicationDeliveryType = ReminderService.CommunicationDeliveryType.Email,
User = "your@email.com",
IncludeUnsubscribe = true
};
try
{
string result = await service.SendReminderAsync("sp231f52f87d6f", "si7abef56540bd", request);
Console.WriteLine($"Reminder sent successfully: {result}");
}
catch (Exception ex)
{
Console.Error.WriteLine($"Failed to send reminder: {ex.Message}");
}
}
Common Use Cases for Sending Reminders
Sending Email Reminder
To send an email reminder to a signee:
{
"CommunicationDeliveryType": "Email",
"User": "your@email.com",
"IncludeUnsubscribe": true
}
Sending SMS Reminder
For signees with Qualified signature types who have a valid mobile number:
{
"CommunicationDeliveryType": "Sms",
"User": "your@email.com"
}
Canceling Automatic Reminders
You can cancel all scheduled automatic reminders for a specific signee. This is useful when you no longer want reminders to be sent to a signee, for example if they've indicated they won't be signing or if the document is no longer relevant.
API Endpoints
For signing processes:
DELETE /signing/process/{ProcessKey}/signee/{SigneeKey}/remind
For signing sequences:
DELETE /signing/sequence/{SequenceKey}/signee/{SequenceSigneeKey}/remind
Authentication
This endpoint requires the same basic authentication as other API calls.
Request Parameters
For signing processes:
Parameter | Type | Required | Description |
---|---|---|---|
ProcessKey | string | Yes | The unique identifier for the signing process |
SigneeKey | string | Yes | The unique identifier for the signee |
For signing sequences:
Parameter | Type | Required | Description |
---|---|---|---|
SequenceKey | string | Yes | The unique identifier for the signing sequence |
SequenceSigneeKey | string | Yes | The unique identifier for the sequence signee |
Response
The API returns a standard HTTP result indicating success or failure.
Response Codes
200 OK
: Reminders were successfully canceled400 Bad Request
: The request parameters were invalid404 Not Found
: The signing process/sequence or signee could not be found500 Internal Server Error
: Server error
Examples for Canceling Reminders
- cURL
- JavaScript
- C#
# For a signing process
curl -X DELETE "https://onboarding.taktikal.is/signing/process/sp231f52f87d6f/signee/si7abef56540bd/remind" \
-H "Authorization: Basic $(echo -n 'your_companyKey:your_ApiKey' | base64)"
# For a signing sequence
curl -X DELETE "https://onboarding.taktikal.is/signing/sequence/sq723ab56540bd/signee/gs7abef56323ab/remind" \
-H "Authorization: Basic $(echo -n 'your_companyKey:your_ApiKey' | base64)"
const cancelReminders = async (type, key1, key2) => {
// Create basic auth credentials
const credentials = btoa("your_companyKey:your_ApiKey");
// Determine the endpoint based on type
const endpoint = type === 'process'
? `signing/process/${key1}/signee/${key2}/remind`
: `signing/sequence/${key1}/signee/${key2}/remind`;
const response = await fetch(`https://onboarding.taktikal.is/${endpoint}`, {
method: "DELETE",
headers: {
"Authorization": `Basic ${credentials}`,
}
});
if (response.ok) {
console.log("Reminders canceled successfully");
} else {
console.error("Failed to cancel reminders:", await response.text());
}
};
// Example for a signing process
cancelReminders('process', 'sp231f52f87d6f', 'si7abef56540bd');
// Example for a signing sequence
// cancelReminders('sequence', 'sq723ab56540bd', 'gs7abef56323ab');
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
public partial class ReminderService
{
// ...existing service setup code...
public async Task CancelProcessReminderAsync(string processKey, string signeeKey)
{
var response = await _httpClient.DeleteAsync(
$"{_baseUrl}/signing/process/{processKey}/signee/{signeeKey}/remind");
response.EnsureSuccessStatusCode();
}
public async Task CancelSequenceReminderAsync(string sequenceKey, string sequenceSigneeKey)
{
var response = await _httpClient.DeleteAsync(
$"{_baseUrl}/signing/sequence/{sequenceKey}/signee/{sequenceSigneeKey}/remind");
response.EnsureSuccessStatusCode();
}
}
// Example usage
public async Task CancelRemindersExample()
{
var service = new ReminderService(
"https://onboarding.taktikal.is",
"your_companyKey",
"your_ApiKey");
try
{
// For a signing process
await service.CancelProcessReminderAsync("sp231f52f87d6f", "si7abef56540bd");
Console.WriteLine("Process reminders canceled successfully");
// For a signing sequence
// await service.CancelSequenceReminderAsync("sq723ab56540bd", "gs7abef56323ab");
// Console.WriteLine("Sequence reminders canceled successfully");
}
catch (Exception ex)
{
Console.Error.WriteLine($"Failed to cancel reminders: {ex.Message}");
}
}
Notes
- The
CommunicationDeliveryType
must match one of the supported delivery types for the signee:- For Qualified signatures: Email or SMS
- For Simple and ClickToSign signatures: Email only
- If the signee doesn't have a phone number and
CommunicationDeliveryType.SMS
is selected, the corresponding delivery method will fail - If the process is part of a signing sequence, the reminder will be for the sequence
- The
User
parameter is used for tracking and will appear in activity logs - For
Email
reminders, settingIncludeUnsubscribe
totrue
will add an unsubscribe link to the email - Canceling reminders only affects scheduled automatic reminders. It does not prevent manual reminders from being sent later
- Once reminders are canceled, they cannot be reinstated without setting up a new reminder rule for the signing process