Signly logo Signly Docs
Menu

Signly Partner API

Core

Official M2M API reference for integration setup, templates, and electronic signature documents.

The public third-party surface starts at `/api`, `/v1/templates`, `/v1/documents`, and `/v1/events/{processId}`. Signly App frontend authentication is not part of this reference and must not be modeled as M2M.

Authentication model

Credential bootstrap is performed with an administrative Signly App session against `/api`. Once created, the M2M integration consumes the API by sending `X-Tenant-Signly` and `X-Auth-Signly` on every request.

What the real partner API covers

Credential bootstrap

Read, create, or delete the tenant partner configuration from the authenticated app.

Templates

Create templates, read versions, and manage signed URLs for PDF upload and download.

Documents

Publish documents, read status, extend deadlines, cancel processes, and resend invitations.

Events by process

Recover the chronological trace for a `processId` and use webhooks to learn about each change in real time.

Partner credential creation

The `/api` endpoint is used from the administrative app to create the credential your backend will later consume.

Partner credential creation
POST /api
{
  "auth_method": "KEY"
}

Documented public surface

You will first see the active partner-collection surface and then the advanced capabilities of the same public M2M API. Each detailed endpoint below includes request examples, body fields, successful responses, and common error cases.

GET /api
POST /api
DELETE /api
GET /v1/templates
GET /v1/templates/{templateId}
GET /v1/documents
POST /v1/documents
GET /v1/documents/{documentId}
POST /v1/documents/{documentId}/extend
DELETE /v1/documents/{documentId}/cancel
POST /v1/documents/{documentId}/participants/{participantId}/resend
GET /v1/events/{processId}
GET /v1/templates/{templateId}/history
GET /v1/templates/{templateId}/versions/{version}
GET /v1/templates/{templateId}/fields
PUT /v1/templates/{templateId}/fields
POST /v1/templates
PUT /v1/templates/{templateId}
POST /v1/templates/{templateId}/versions/{version}/upload-url
GET /v1/templates/{templateId}/versions/{version}/download-url
DELETE /v1/templates/{templateId}/versions/{version}
DELETE /v1/templates/{templateId}
GET /v1/documents/{documentId}/summary

API Reference

23 endpoints

Each endpoint includes method, path, functional description, headers, parameters, body fields, request example, and success/error responses.

GET /api

Gets the tenant partner configuration.

Endpoint consumed from Signly App to check whether the tenant already has a partner credential and which method it uses. It is not the M2M authentication channel; it is only configuration bootstrap.

Headers

Field Type Required Description
X-Auth-Signly

ex. Bearer eyJhbGciOi...

Bearer token Yes Administrative Signly App session. Used only to create or delete the tenant partner configuration.

Request examples

2
cURL
curl -X GET "https://api.signly.apologs.com/api" \
  -H "X-Auth-Signly: Bearer eyJhbGciOi..."
Python
import requests

url = "https://api.signly.apologs.com/api"
headers = {
    "X-Auth-Signly": "Bearer eyJhbGciOi...",
}
response = requests.get(
    url,
    headers=headers,
)

print(response.status_code)
print(response.json())
200 OK

Current configuration

Current configuration · 200 OK
{
  "success": true,
  "status": 200,
  "code": "api_integration_fetched",
  "message": "API integration configuration fetched.",
  "data": {
    "tenantId": "58bff266-cdad-46db-b373-1b06476146cd",
    "authMethod": "KEY",
    "status": "ACTIVE",
    "keyId": "pk_01J8XQ8B0P8XSH6M3B2P0N5W9K",
    "createdAt": "2026-04-23T14:55:00Z",
    "updatedAt": "2026-04-23T14:55:00Z",
    "partnerBaseUrl": "https://api.signly.apologs.com"
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
404 Not Found

Missing configuration

Missing configuration · 404 Not Found
{
  "success": false,
  "status": 404,
  "code": "api_integration_not_found",
  "message": "API integration configuration not found.",
  "data": null,
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": {
    "type": "not_found",
    "details": { "resource": "api_integration" }
  }
}

Notes

  • This endpoint requires a tenant administrator session inside Signly App.
POST /api

Creates a partner credential.

Generates the credential your backend will later send in `X-Auth-Signly`. The UI currently exposes `KEY` and `HMAC`; `JWT` exists in the authorizer but is not open in the operational flow described here.

Headers

Field Type Required Description
X-Auth-Signly

ex. Bearer eyJhbGciOi...

Bearer token Yes Administrative Signly App session. Used only to create or delete the tenant partner configuration.
Content-Type

ex. application/json

application/json Yes JSON payload.

Body Fields

Field Type Required Description
auth_method

ex. KEY

string Yes Authentication method to generate for the tenant.

Request examples

2

The secret may be shown only in the creation response.

cURL
curl -X POST "https://api.signly.apologs.com/api" \
  -H "X-Auth-Signly: Bearer eyJhbGciOi..." \
  -H "Content-Type: application/json" \
  -d '{ "auth_method": "KEY" }'
Python
import requests

url = "https://api.signly.apologs.com/api"
headers = {
    "X-Auth-Signly": "Bearer eyJhbGciOi...",
    "Content-Type": "application/json",
}
payload = { "auth_method": "KEY" }
response = requests.post(
    url,
    headers=headers,
    json=payload,
)

print(response.status_code)
print(response.json())
201 Created

Credential created

Credential created · 201 Created
{
  "success": true,
  "status": 201,
  "code": "api_integration_created",
  "message": "API integration created.",
  "data": {
    "tenantId": "58bff266-cdad-46db-b373-1b06476146cd",
    "authMethod": "KEY",
    "status": "ACTIVE",
    "keyId": "pk_01J8XQ8B0P8XSH6M3B2P0N5W9K",
    "apiKey": "sk_live_partner_abc123",
    "createdAt": "2026-04-23T14:55:00Z"
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
400 Bad Request

Invalid method

Invalid method · 400 Bad Request
{
  "success": false,
  "status": 400,
  "code": "invalid_auth_method",
  "message": "Auth method is invalid.",
  "data": null,
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": {
    "type": "validation",
    "details": { "field": "auth_method", "allowed": ["KEY", "HMAC"] }
  }
}
DELETE /api

Revokes the current partner credential.

Deletes the tenant partner configuration. Your backend stops being able to authenticate with the revoked credential.

Headers

Field Type Required Description
X-Auth-Signly

ex. Bearer eyJhbGciOi...

Bearer token Yes Administrative Signly App session. Used only to create or delete the tenant partner configuration.

Request examples

1
cURL
curl -X DELETE "https://api.signly.apologs.com/api" \
  -H "X-Auth-Signly: Bearer eyJhbGciOi..."
200 OK

Integration deleted

Integration deleted · 200 OK
{
  "success": true,
  "status": 200,
  "code": "api_integration_deleted",
  "message": "API integration deleted.",
  "data": { "deleted": true },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
GET /v1/templates

Lists current templates.

Returns the latest version of each template for the tenant authenticated with partner headers.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Request examples

2
cURL
curl -X GET "https://api.signly.apologs.com/v1/templates?limit=10&sort=-createdAt" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
Python
import requests

url = "https://api.signly.apologs.com/v1/templates?limit=10&sort=-createdAt"
headers = {
    "X-Tenant-Signly": "58bff266-cdad-46db-b373-1b06476146cd",
    "X-Auth-Signly": "sk_live_partner_abc123",
}
response = requests.get(
    url,
    headers=headers,
)

print(response.status_code)
print(response.json())
200 OK

Templates listed

Templates listed · 200 OK
{
  "success": true,
  "status": 200,
  "code": "templates_listed",
  "message": "Templates listed.",
  "data": [
    {
      "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1",
      "templateName": "Acuerdo de servicio",
      "description": "Version comercial vigente",
      "version": 2,
      "createdAt": "2026-04-18T20:00:00Z",
      "updatedAt": "2026-04-23T10:30:00Z"
    }
  ],
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
GET /v1/templates/{templateId}

Gets the latest template version.

Returns the current version of a specific template. This endpoint is present in the current partner collection.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
templateId string Yes Template identifier.

Request examples

1
cURL
curl -X GET "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Template fetched

Template fetched · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_fetched",
  "message": "Template fetched.",
  "data": {
    "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1",
    "templateName": "Acuerdo de servicio",
    "description": "Version comercial vigente",
    "templateVersion": "3f34581a-5b4a-4068-ab72-5f2b36611fa1#0002",
    "version": 2,
    "fields": []
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
404 Not Found

Template not found

Template not found · 404 Not Found
{
  "success": false,
  "status": 404,
  "code": "not_found",
  "message": "Template not found.",
  "data": null,
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": {
    "type": "not_found",
    "details": { "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1" }
  }
}
POST /v1/templates

Creates a template.

Creates a template v1. You can then request a signed URL to upload the PDF for that version.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.
Content-Type

ex. application/json

application/json Yes JSON payload content type.

Body Fields

Field Type Required Description
templateName

ex. Acuerdo de servicio

string Yes Template display name.
description

ex. Version comercial vigente

string No Functional or business context.

Request examples

2
cURL
curl -X POST "https://api.signly.apologs.com/v1/templates" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123" \
  -H "Content-Type: application/json" \
  -d '{ "templateName": "Acuerdo de servicio", "description": "Version comercial vigente" }'
Python
import requests

url = "https://api.signly.apologs.com/v1/templates"
headers = {
    "X-Tenant-Signly": "58bff266-cdad-46db-b373-1b06476146cd",
    "X-Auth-Signly": "sk_live_partner_abc123",
    "Content-Type": "application/json",
}
payload = { "templateName": "Acuerdo de servicio", "description": "Version comercial vigente" }
response = requests.post(
    url,
    headers=headers,
    json=payload,
)

print(response.status_code)
print(response.json())
201 Created

Template created

Template created · 201 Created
{
  "success": true,
  "status": 201,
  "code": "template_created",
  "message": "Template created.",
  "data": {
    "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1",
    "templateName": "Acuerdo de servicio",
    "description": "Version comercial vigente",
    "version": 1
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
GET /v1/templates/{templateId}/history

Lists version history.

Returns every published version of a template, useful for audit or operational rollback.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
templateId string Yes Template whose history you want to inspect.

Request examples

1
cURL
curl -X GET "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1/history" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

History listed

History listed · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_history_listed",
  "message": "Template history listed.",
  "data": [
    { "templateVersion": "3f34581a-5b4a-4068-ab72-5f2b36611fa1#0001", "version": 1 },
    { "templateVersion": "3f34581a-5b4a-4068-ab72-5f2b36611fa1#0002", "version": 2 }
  ],
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
GET /v1/templates/{templateId}/versions/{version}

Gets a specific version.

Allows you to recover an exact template version without depending on the latest current version.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
templateId string Yes Template identifier.
version

ex. 2

integer Yes Required numeric version.

Request examples

1
cURL
curl -X GET "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1/versions/2" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Version fetched

Version fetched · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_version_fetched",
  "message": "Template version fetched.",
  "data": {
    "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1",
    "templateVersion": "3f34581a-5b4a-4068-ab72-5f2b36611fa1#0002",
    "version": 2
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
GET /v1/templates/{templateId}/fields

Gets signable fields.

Retrieves the definition of signable or fillable fields associated with the template.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
templateId string Yes Template to inspect.

Request examples

1
cURL
curl -X GET "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1/fields" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Fields listed

Fields listed · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_fields_fetched",
  "message": "Template fields fetched.",
  "data": [
    {
      "fieldName": "FIRMA_CLIENTE",
      "fieldType": "SIGNATURE",
      "page": 1,
      "x": 124,
      "y": 566
    }
  ],
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
PUT /v1/templates/{templateId}/fields

Creates or updates signable fields.

Overwrites the template field definition for the current version.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.
Content-Type

ex. application/json

application/json Yes JSON payload content type.

Path Params

Field Type Required Description
templateId string Yes Template whose fields will be updated.

Body Fields

Field Type Required Description
[].fieldName

ex. FIRMA_CLIENTE

string Yes Field functional identifier.
[].fieldType

ex. SIGNATURE

string Yes Field type, for example `SIGNATURE` or `TEXT`.

Request examples

1
cURL
curl -X PUT "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1/fields" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123" \
  -H "Content-Type: application/json" \
  -d '[
  {
    "fieldName": "FIRMA_CLIENTE",
    "fieldType": "SIGNATURE",
    "page": 1,
    "x": 124,
    "y": 566
  }
]'
200 OK

Fields updated

Fields updated · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_fields_updated",
  "message": "Template fields updated.",
  "data": [
    {
      "fieldName": "FIRMA_CLIENTE",
      "fieldType": "SIGNATURE",
      "page": 1
    }
  ],
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
POST /v1/templates/{templateId}/versions/{version}/upload-url

Generates the signed URL to upload the PDF.

Allows uploading the file associated with a specific template version. The binary upload then happens directly against S3.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
templateId string Yes Template identifier.
version

ex. 1

integer Yes Template version to which the file belongs.

Request examples

1
cURL
curl -X POST "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1/versions/1/upload-url" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

URL generated

URL generated · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_upload_url_generated",
  "message": "Upload URL generated.",
  "data": {
    "method": "PUT",
    "uploadUrl": "https://s3.amazonaws.com/...",
    "expiresInSeconds": 900
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
PUT /v1/templates/{templateId}

Creates a new version.

Updates template metadata and generates a new version on top of which you can later upload an updated PDF.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.
Content-Type

ex. application/json

application/json Yes JSON payload content type.

Path Params

Field Type Required Description
templateId string Yes Template to version.

Body Fields

Field Type Required Description
templateName

ex. Acuerdo de servicio

string Yes Display name for the new version.

Request examples

1
cURL
curl -X PUT "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123" \
  -H "Content-Type: application/json" \
  -d '{ "templateName": "Acuerdo de servicio", "description": "Version 3 con nuevos campos" }'
200 OK

New version created

New version created · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_updated",
  "message": "Template updated.",
  "data": {
    "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1",
    "templateVersion": "3f34581a-5b4a-4068-ab72-5f2b36611fa1#0003",
    "version": 3
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
GET /v1/templates/{templateId}/versions/{version}/download-url

Generates a signed download URL.

Returns a temporary URL to download the stored PDF for a specific version.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
templateId string Yes Template identifier.
version

ex. 2

integer Yes Version of the file to download.

Request examples

1
cURL
curl -X GET "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1/versions/2/download-url" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Download URL

Download URL · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_download_url_generated",
  "message": "Download URL generated.",
  "data": {
    "downloadUrl": "https://s3.amazonaws.com/...",
    "expiresInSeconds": 900
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
DELETE /v1/templates/{templateId}/versions/{version}

Deletes a specific version.

Deletes a specific template version without affecting the rest of the history.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
templateId string Yes Base template.
version

ex. 1

integer Yes Version to delete.

Request examples

1
cURL
curl -X DELETE "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1/versions/1" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Version deleted

Version deleted · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_version_deleted",
  "message": "Template version deleted.",
  "data": { "deleted": true },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
DELETE /v1/templates/{templateId}

Deletes the full template.

Deletes all versions of a template. Use it carefully because it affects history and future documents based on that definition.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
templateId string Yes Template to delete.

Request examples

1
cURL
curl -X DELETE "https://api.signly.apologs.com/v1/templates/3f34581a-5b4a-4068-ab72-5f2b36611fa1" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Template deleted

Template deleted · 200 OK
{
  "success": true,
  "status": 200,
  "code": "template_deleted",
  "message": "Template deleted.",
  "data": null,
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
GET /v1/documents

Lists tenant documents.

Lists signing processes for the tenant. Supports filters, pagination, and sorting by `createdAt`.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Query Params

Field Type Required Description
limit

ex. 10

integer No Maximum number of results per page. The backend accepts from 1 to 100.
cursor string No Opaque pagination cursor.
sort

ex. -createdAt

string No Sort by `createdAt`; use `-createdAt` for newest first.
status

ex. IN_PROGRESS

string No Filters by document status.

Request examples

2
cURL
curl -X GET "https://api.signly.apologs.com/v1/documents?limit=10&sort=-createdAt" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
Python
import requests

url = "https://api.signly.apologs.com/v1/documents?limit=10&sort=-createdAt"
headers = {
    "X-Tenant-Signly": "58bff266-cdad-46db-b373-1b06476146cd",
    "X-Auth-Signly": "sk_live_partner_abc123",
}
response = requests.get(
    url,
    headers=headers,
)

print(response.status_code)
print(response.json())
200 OK

Documents listed

Documents listed · 200 OK
{
  "success": true,
  "status": 200,
  "code": "documents_listed",
  "message": "Documents listed.",
  "data": [
    {
      "documentId": "0e51e6ee-4643-4381-97e0-5164c00a0142",
      "createdAt": "2026-04-18T20:22:08.258102+00:00",
      "status": "CREATED",
      "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1"
    }
  ],
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
400 Bad Request

Invalid sort field

Invalid sort field · 400 Bad Request
{
  "success": false,
  "status": 400,
  "code": "bad_request",
  "message": "Invalid sort field.",
  "data": null,
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": {
    "type": "validation",
    "details": { "code": "INVALID_SORT_FIELD", "field": "creationDate" }
  }
}
POST /v1/documents

Publishes a signing document.

Creates the signing flow from a template and a participant list. This is the central endpoint of the partner integration.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.
Content-Type

ex. application/json

application/json Yes JSON payload content type.

Body Fields

Field Type Required Description
templateId string Yes Base template identifier.
templateVersion

ex. 0002

string Yes Version that must be used for the document.
participants Participant[] Yes List of signers or flow participants.
participants[].displayName

ex. Juan David Otero

string Yes Participant display name.
participants[].signatureMode

ex. ["SIGNATURE_EMAIL"]

string[] Yes Signature channels or mechanisms. Example: `SIGNATURE_EMAIL`, `SIGNATURE_SMS`, `SIGNATURE_BIOMETRIC`.
participants[].identity.email

ex. juanoterot@outlook.com

string No Participant email when the flow uses email.
participants[].identity.phone

ex. +573217597071

string No Participant phone for SMS, WhatsApp, or operational contact.
participants[].identity.documentNumber

ex. 1109661121

string No Participant document number. It becomes mandatory for some biometric flows.
participants[].policy.attemptsMax

ex. 3

integer No Maximum number of attempts allowed.
participants[].policy.cooldownSeconds

ex. 60

integer No Minimum time between participant attempts.
flowPolicy.onParticipantFail

ex. CANCEL_FLOW

string No Policy to apply when a participant fails. Example: `CANCEL_FLOW`.
orderMode

ex. PARALLEL

string Yes Defines whether signing is `PARALLEL` or `SEQUENTIAL`.
deadlineAt

ex. 2026-05-21T23:59:00Z

string (ISO-8601) No Process deadline.
metadata

ex. { "source": "crm", "contractId": "CNT-4482" }

object No Free-form object to correlate the document with your system.

Request examples

2
cURL
curl -X POST "https://api.signly.apologs.com/v1/documents" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123" \
  -H "Content-Type: application/json" \
  -d '{
  "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1",
  "templateVersion": "0002",
  "participants": [
    {
      "displayName": "Juan David Otero",
      "signatureMode": ["SIGNATURE_EMAIL"],
      "identity": { "email": "juanoterot@outlook.com" },
      "policy": { "attemptsMax": 3, "cooldownSeconds": 60 }
    }
  ],
  "orderMode": "PARALLEL",
  "deadlineAt": "2026-05-21T23:59:00Z"
}'
Python
import requests

url = "https://api.signly.apologs.com/v1/documents"
headers = {
    "X-Tenant-Signly": "58bff266-cdad-46db-b373-1b06476146cd",
    "X-Auth-Signly": "sk_live_partner_abc123",
    "Content-Type": "application/json",
}
payload = {
  "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1",
  "templateVersion": "0002",
  "participants": [
    {
      "displayName": "Juan David Otero",
      "signatureMode": ["SIGNATURE_EMAIL"],
      "identity": { "email": "juanoterot@outlook.com" },
      "policy": { "attemptsMax": 3, "cooldownSeconds": 60 }
    }
  ],
  "orderMode": "PARALLEL",
  "deadlineAt": "2026-05-21T23:59:00Z"
}
response = requests.post(
    url,
    headers=headers,
    json=payload,
)

print(response.status_code)
print(response.json())
201 Created

Document created

Document created · 201 Created
{
  "success": true,
  "status": 201,
  "code": "document_created",
  "message": "Document created.",
  "data": {
    "documentId": "0e51e6ee-4643-4381-97e0-5164c00a0142",
    "status": "CREATED",
    "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1",
    "participants": [
      {
        "participantId": "a244be1a-98c5-4faa-bcb7-55218983a731",
        "displayName": "Juan David Otero"
      }
    ]
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
400 Bad Request

Invalid payload

Invalid payload · 400 Bad Request
{
  "success": false,
  "status": 400,
  "code": "validation_error",
  "message": "Validation error.",
  "data": null,
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": {
    "type": "validation",
    "details": { "fields": { "participants": { "0": { "_schema": ["Document number is required for biometric signature."] } } } }
  }
}
402 Payment Required

Insufficient credits

Insufficient credits · 402 Payment Required
{
  "success": false,
  "status": 402,
  "code": "insufficient_credits",
  "message": "Not enough credits to process the document.",
  "data": null,
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": {
    "type": "credits",
    "details": {}
  }
}
GET /v1/documents/{documentId}

Gets a document.

Returns the current status and metadata for the signing flow.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
documentId string Yes Document identifier.

Request examples

1
cURL
curl -X GET "https://api.signly.apologs.com/v1/documents/0e51e6ee-4643-4381-97e0-5164c00a0142" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Document fetched

Document fetched · 200 OK
{
  "success": true,
  "status": 200,
  "code": "document_fetched",
  "message": "Document fetched.",
  "data": {
    "documentId": "0e51e6ee-4643-4381-97e0-5164c00a0142",
    "status": "IN_PROGRESS",
    "createdAt": "2026-04-18T20:22:08.258102+00:00",
    "updatedAt": "2026-04-23T15:01:02Z",
    "templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1"
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
404 Not Found

Document not found

Document not found · 404 Not Found
{
  "success": false,
  "status": 404,
  "code": "not_found",
  "message": "Document not found.",
  "data": null,
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": {
    "type": "not_found",
    "details": { "documentId": "0e51e6ee-4643-4381-97e0-5164c00a0142" }
  }
}
POST /v1/documents/{documentId}/extend

Extends the deadline.

Updates the process maximum date without creating a new document.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.
Content-Type

ex. application/json

application/json Yes JSON payload content type.

Path Params

Field Type Required Description
documentId string Yes Document to extend.

Body Fields

Field Type Required Description
newDeadlineAt

ex. 2026-06-15T23:59:00Z

string (ISO-8601) Yes New document deadline.

Request examples

1
cURL
curl -X POST "https://api.signly.apologs.com/v1/documents/0e51e6ee-4643-4381-97e0-5164c00a0142/extend" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123" \
  -H "Content-Type: application/json" \
  -d '{ "newDeadlineAt": "2026-06-15T23:59:00Z" }'
200 OK

Deadline extended

Deadline extended · 200 OK
{
  "success": true,
  "status": 200,
  "code": "document_deadline_extended",
  "message": "Deadline extended.",
  "data": {
    "documentId": "0e51e6ee-4643-4381-97e0-5164c00a0142",
    "deadlineAt": "2026-06-15T23:59:00Z"
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
DELETE /v1/documents/{documentId}/cancel

Cancels an active document.

Stops the signing flow and prevents further participant progress.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
documentId string Yes Document that must be cancelled.

Request examples

1
cURL
curl -X DELETE "https://api.signly.apologs.com/v1/documents/0e51e6ee-4643-4381-97e0-5164c00a0142/cancel" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Document cancelled

Document cancelled · 200 OK
{
  "success": true,
  "status": 200,
  "code": "document_cancelled",
  "message": "Document cancelled.",
  "data": { "documentId": "0e51e6ee-4643-4381-97e0-5164c00a0142" },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
POST /v1/documents/{documentId}/participants/{participantId}/resend

Resends an invitation.

Triggers the invitation again for a specific document participant.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
documentId string Yes Flow document.
participantId string Yes Participant that will receive the resend.

Request examples

1
cURL
curl -X POST "https://api.signly.apologs.com/v1/documents/0e51e6ee-4643-4381-97e0-5164c00a0142/participants/a244be1a-98c5-4faa-bcb7-55218983a731/resend" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Invitation resent

Invitation resent · 200 OK
{
  "success": true,
  "status": 200,
  "code": "invitation_resent",
  "message": "Invitation resent.",
  "data": {
    "documentId": "0e51e6ee-4643-4381-97e0-5164c00a0142",
    "participantId": "a244be1a-98c5-4faa-bcb7-55218983a731"
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
GET /v1/documents/{documentId}/summary

Gets an operational summary.

Returns a compact view of document progress for internal dashboards or reconciliation.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
documentId string Yes Document to summarize.

Request examples

1
cURL
curl -X GET "https://api.signly.apologs.com/v1/documents/0e51e6ee-4643-4381-97e0-5164c00a0142/summary" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
200 OK

Document summary

Document summary · 200 OK
{
  "success": true,
  "status": 200,
  "code": "document_summary_fetched",
  "message": "Document summary fetched.",
  "data": {
    "documentId": "0e51e6ee-4643-4381-97e0-5164c00a0142",
    "status": "IN_PROGRESS",
    "completedParticipants": 0,
    "pendingParticipants": 1
  },
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}
GET /v1/events/{processId}

Lists events for a process.

Returns the timeline for the `processId` associated with a participant. It is the targeted lookup used to reconstruct chronological evidence when you need historical detail beyond webhooks.

Headers

Field Type Required Description
X-Tenant-Signly

ex. 58bff266-cdad-46db-b373-1b06476146cd

string Yes Tenant identifier that scopes the entire operation.
X-Auth-Signly

ex. sk_live_partner_abc123

string Yes Tenant partner credential. For `KEY` send the raw value; for `HMAC` the authorizer accepts `HMAC <secret>` or the raw secret.

Path Params

Field Type Required Description
processId

ex. 91b5d467-ee84-4c78-8f37-048387797ab3-d0a31523-3d9c-4613-936a-9bf510ad05d4

string Yes Process identifier returned on document creation or within participants.

Request examples

2
cURL
curl -X GET "https://api.signly.apologs.com/v1/events/91b5d467-ee84-4c78-8f37-048387797ab3-d0a31523-3d9c-4613-936a-9bf510ad05d4" \
  -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
  -H "X-Auth-Signly: sk_live_partner_abc123"
Python
import requests

url = "https://api.signly.apologs.com/v1/events/91b5d467-ee84-4c78-8f37-048387797ab3-d0a31523-3d9c-4613-936a-9bf510ad05d4"
headers = {
    "X-Tenant-Signly": "58bff266-cdad-46db-b373-1b06476146cd",
    "X-Auth-Signly": "sk_live_partner_abc123",
}
response = requests.get(
    url,
    headers=headers,
)

print(response.status_code)
print(response.json())
200 OK

Process events

Process events · 200 OK
{
  "success": true,
  "status": 200,
  "code": "events_listed",
  "message": "Events listed.",
  "data": [
    {
      "eventId": "01JC8DYNXKHPK6H4F0VYB3J9R3",
      "eventType": "PROCESS_CREATED",
      "processId": "proc-20251027-0001",
      "status": "SUCCESS",
      "actor": "backend",
      "timestamp": "2025-10-27T15:00:01.120Z"
    },
    {
      "eventId": "01JC8E0XYAHTYV26J7W72RBQWQ",
      "eventType": "OTP_SENT",
      "processId": "proc-20251027-0001",
      "status": "SUCCESS",
      "actor": "frontend",
      "timestamp": "2025-10-27T15:03:18.904Z"
    }
  ],
  "pagination": null,
  "meta": {
    "request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
    "timestamp": "2026-04-23T15:00:00Z",
    "api_version": "v1",
    "tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
  },
  "error": null
}

Notes

  • This endpoint appears in the `SIGNLY_PARTNER` collection and is the most useful targeted lookup for participant-level functional audit.