Activity Log
Overview
The Activity Log records every meaningful event in a signing process — when it was created, when signees were added, when invitations and reminders were sent, delivery receipts, signatures, and completion.
Taktikal's API returns a ProcessKey when a signing process is created. You can
use the Activity Log to check the status of that process, audit who did what, and
report on signing activity across your whole company.
When all signees have signed, a web-hook request is sent containing the signed
document. See Webhooks.
Environments & Base URLs
The examples below use {baseUrl} as a placeholder for the API base URL of your
environment:
Use the correct API credentials (companyKey and apiKey) for each environment.
See the Introduction page for all available paths.
Querying the Activity Log
There is a single, company-wide endpoint for reading the Activity Log:
GET {baseUrl}/signing/activity
The endpoint is scoped to the company that owns the API credentials, so a single request returns activity across all of that company's signing processes within the requested date range. Use the optional filters below to narrow the result down to a single process, a single user, a flow type, or a free-text search — there is no longer a separate endpoint per process or per user.
Authentication
This endpoint requires basic authentication. 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.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| StartDate | datetime | Yes | Start of the date range to search. Must be earlier than EndDate. |
| EndDate | datetime | Yes | End of the date range to search. Must be later than StartDate. |
| Take | int | No | Page size — return at most N results. Defaults to 10,000. |
| Skip | int | No | Page offset — skip the first N results. Defaults to 0. |
| User | string | No | Filter to activity for a single user (the email of the user that started the process). |
| ProcessKey | string | No | Filter to a single signing process. |
| FlowType | enum | No | Filter to a specific flow type. |
| FlowKey | string | No | Filter to a specific flow key. |
| Search | string | No | Free-text search across process key, signee name / email / phone / SSN, and file name. |
| StatusFilter | enum | No | Filter by signing process status: All (default), Completed, Active, or InActive. |
Paging
For large date ranges, page through the results with Take and Skip. To build
a pager you need the total number of matching records, which is available from a
companion endpoint that accepts the same filters:
GET {baseUrl}/signing/activity/total
It returns the total count so you can calculate the number of pages:
{
"total": 1342
}
Examples
- cURL
- JavaScript
- C#
# Set the base URL for your environment (see "Environments & Base URLs" above)
BASE_URL="https://core.taktikal.com/api"
curl -G "$BASE_URL/signing/activity" \
-H "Authorization: Basic $(echo -n 'your_companyKey:your_ApiKey' | base64)" \
--data-urlencode "StartDate=2024-01-01" \
--data-urlencode "EndDate=2024-01-31" \
--data-urlencode "Take=100" \
--data-urlencode "Skip=0"
const getActivityLog = async () => {
// Set the base URL for your environment (see "Environments & Base URLs" above)
const baseUrl = "https://core.taktikal.com/api";
// Create basic auth credentials
const credentials = btoa("your_companyKey:your_ApiKey");
const params = new URLSearchParams({
StartDate: "2024-01-01",
EndDate: "2024-01-31",
Take: "100",
Skip: "0",
// Optional filters:
// ProcessKey: "sp231f52f87d6f4caaa2e29ecac92d055b",
// User: "test@example.com",
// Search: "signee@example.com",
});
const response = await fetch(
`${baseUrl}/signing/activity?${params}`,
{
method: "GET",
headers: {
Authorization: `Basic ${credentials}`,
},
}
);
if (response.ok) {
const activity = await response.json();
console.log("Activity log:", activity);
} else {
console.error("Failed to fetch activity log:", await response.text());
}
};
getActivityLog();
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
public class ActivityLogService
{
private readonly HttpClient _httpClient;
private readonly string _baseUrl;
public ActivityLogService(string baseUrl, string companyKey, string apiKey)
{
_baseUrl = baseUrl;
_httpClient = new HttpClient();
// Set up basic authentication
var authValue = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{companyKey}:{apiKey}"));
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", authValue);
}
public async Task<string> GetActivityLogAsync(DateTime startDate, DateTime endDate, int take = 100, int skip = 0)
{
var query =
$"StartDate={startDate:yyyy-MM-dd}" +
$"&EndDate={endDate:yyyy-MM-dd}" +
$"&Take={take}" +
$"&Skip={skip}";
var response = await _httpClient.GetAsync($"{_baseUrl}/signing/activity?{query}");
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
// Example usage
public async Task GetActivityLogExample()
{
// Set the base URL for your environment (see "Environments & Base URLs" above)
var service = new ActivityLogService(
"https://core.taktikal.com/api",
"your_companyKey",
"your_ApiKey");
try
{
string result = await service.GetActivityLogAsync(
new DateTime(2024, 1, 1),
new DateTime(2024, 1, 31));
Console.WriteLine($"Activity log: {result}");
}
catch (Exception ex)
{
Console.Error.WriteLine($"Failed to fetch activity log: {ex.Message}");
}
}
Response
The endpoint returns an array of signing processes. Each entry wraps the process, its ordered list of activity entries, its signees, and any attachments.
Example response for a SigningProcess with one signee that has signed:
[
{
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"status": "Completed",
"activityDisplayName": "demo_doc-drop-and-sign-small.pdf",
"fileName": "demo_doc-drop-and-sign-small.pdf",
"activityLog": [
{
"id": 1,
"flowKey": "3fc7848d338a",
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"status": "Created",
"description": "Signing process created. ProcessKey: sp231f52f87d6f4caaa2e29ecac92d055b.",
"fileName": "demo_doc-drop-and-sign-small.pdf",
"createdAt": "2019-11-08T11:03:49.0700000Z",
"createdBy": "test@example.com"
},
{
"id": 2,
"flowKey": "3fc7848d338a",
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"signeeKey": "si7abef56540bd49f9a9b8a33969a9cf8c",
"status": "SigneeAdded",
"description": "Signee added. Processkey: sp231f52f87d6f4caaa2e29ecac92d055b. Signee key: si7abef56540bd49f9a9b8a33969a9cf8c.",
"createdAt": "2019-11-08T11:03:49.1200000Z",
"createdBy": "Taktikal.Core"
},
{
"id": 3,
"flowKey": "3fc7848d338a",
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"signeeKey": "si7abef56540bd49f9a9b8a33969a9cf8c",
"status": "SignupSent",
"description": "Signup sent. Processkey: sp231f52f87d6f4caaa2e29ecac92d055b. Signee: si7abef56540bd49f9a9b8a33969a9cf8c. Delivery method : Sms ",
"createdAt": "2019-11-08T11:03:49.4070000Z",
"createdBy": "Taktikal.Core"
},
{
"id": 4,
"flowKey": "3fc7848d338a",
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"status": "Started",
"description": "Signing process started. ProcessKey: sp231f52f87d6f4caaa2e29ecac92d055b.",
"fileName": "demo_doc-drop-and-sign-small.pdf",
"createdAt": "2019-11-08T11:03:49.4230000Z",
"createdBy": "test@example.com"
},
{
"id": 5,
"flowKey": "3fc7848d338a",
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"signeeKey": "si7abef56540bd49f9a9b8a33969a9cf8c",
"status": "SMS:DELIVERED",
"description": "SMS delivery status: DELIVERED.",
"createdAt": "2019-11-08T11:04:04.7030000Z",
"createdBy": "Taktikal.Core"
},
{
"id": 6,
"flowKey": "3fc7848d338a",
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"signeeKey": "si7abef56540bd49f9a9b8a33969a9cf8c",
"status": "SigneeSigned",
"description": "Signee signed. ProcessKey: sp231f52f87d6f4caaa2e29ecac92d055b. Signee key: si7abef56540bd49f9a9b8a33969a9cf8c",
"userAgent": "Mozilla/5.0",
"createdAt": "2019-11-08T11:06:01.5600000Z",
"createdBy": "Taktikal.Core"
},
{
"id": 7,
"flowKey": "3fc7848d338a",
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"signeeKey": "si7abef56540bd49f9a9b8a33969a9cf8c",
"status": "Completed",
"description": "Signing completed. ProcessKey: sp231f52f87d6f4caaa2e29ecac92d055b.",
"createdAt": "2019-11-08T11:06:01.6070000Z",
"createdBy": "Taktikal.Core"
},
{
"id": 8,
"flowKey": "3fc7848d338a",
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"signeeKey": "si7abef56540bd49f9a9b8a33969a9cf8c",
"status": "Confirmation:delivered",
"description": "Mailgun webhook. Event: delivered. To:testUser@example.com. Sender:postmaster@mailgun.taktikal.is. Id:2NwQ3QahRtWZgK37JQ-I8Q. Severity: . Reason:",
"createdAt": "2019-11-08T11:06:04.9930000Z",
"createdBy": "Mailgun"
}
],
"signees": [
{
"processKey": "sp231f52f87d6f4caaa2e29ecac92d055b",
"signeeKey": "si7abef56540bd49f9a9b8a33969a9cf8c",
"ssn": "123456-7890",
"name": "Signee Number One",
"address": "Address 5",
"postalCode": "555",
"city": "Gotham City",
"phone": "1234567",
"email": "signeeOne@example.com",
"signatureType": "Qualified",
"hasReminders": false,
"createdAt": "2019-11-08T11:03:49.1000000Z",
"createdBy": "Taktikal.Core",
"updatedAt": "2019-11-08T11:03:49.1000000Z"
}
],
"sequenceSignees": [],
"attachmentReferences": []
}
]
Response Fields
Each item in the response array has the following shape.
Signing process (wrapper)
| Field | Type | Description |
|---|---|---|
| processKey | string | The signing process identifier. |
| status | string | Current status of the signing process. |
| activityDisplayName | string | Display name for the process (typically the document name). |
| fileName | string | The document file name. |
| activityLog | array | Ordered list of activity entries (see below). |
| signees | array | The signees on the process (see below). |
| sequenceSignees | array | Sequence information, populated only for sequential signing flows. |
| attachmentReferences | array | References to any attachments associated with the process. |
Activity entry (activityLog[])
| Field | Type | Description |
|---|---|---|
| id | int | Unique identifier of the activity entry. |
| flowKey | string | Unique identifier for the flow. |
| processKey | string | The process this activity belongs to. |
| signeeKey | string | (Optional) The signee involved in this activity. |
| status | string | Status of the entry (see example statuses below). |
| description | string | Human-readable description of the activity. |
| userAgent | string | (Optional) The user agent recorded for the action, when available. |
| fileName | string | (Optional) Document file name. |
| createdAt | ISO8601 | Timestamp of the activity. |
| createdBy | string | Email address or system name that created the entry. |
| requiresAuth | bool | (Optional) Whether the step required authentication. |
| signInOrder | bool | (Optional) Whether the process is signed in order. |
| signatureLocation | string | (Optional) Location of the signature. |
| sequenceKey | string | (Optional) The sequence this entry belongs to, for sequential signing. |
Signee (signees[])
| Field | Type | Description |
|---|---|---|
| processKey | string | The process the signee belongs to. |
| signeeKey | string | The signee identifier. |
| ssn | string | Social security number. |
| name | string | Signee name. |
| address | string | Street address. |
| postalCode | string | Postal code. |
| city | string | City. |
| phone | string | Phone number. |
| string | Email address. | |
| signatureType | string | (Optional) The electronic signature type used: Qualified, Simple, ClickToSign, AdvancedVeriff, or BankIdSe. |
| hasReminders | bool | Whether reminders have been scheduled for the signee. |
| createdAt | ISO8601 | When the signee was created. |
| createdBy | string | Email address or system name that created the signee. |
| updatedAt | ISO8601 | When the signee was last updated. |
Example Statuses
The status field on an activity entry describes what happened. Common values
include:
Created— Signing process createdSigneeAdded— Signee added to the processSignupSent— Signup / invitation sent (delivery method noted in the description)Started— Signing process startedSMS:DELIVERED— SMS delivery statusSigneeSigned— Signee completed signingCompleted— Signing process completedConfirmation:delivered— Confirmation email delivered (via Mailgun webhook)SalesPerson:delivered— Salesperson notification delivered (via Mailgun webhook)