API reference
Signers
Search signer assignments and delegate a signer slot.
2 endpoints. Every path below is relative to the base URL.
https://api-uat.softsages.com/corePOST/api/v1/inkfree/envelopes/{id}/signers/{email}/delegate
Delegate a signer slot
Requires the X-API-Key header
Reassigns one signer slot to a different person. The original signer identified by {email} is replaced by the signer described in the request body, who receives a fresh signing invitation. Emits a signer.delegated event.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Required | Envelope id — a 36-character UUID.Example: env_xyz789 |
email | path | string (email) | Required | Email address of the current signer whose slot is being delegated.Example: priya.sharma@example.com |
Request bodyapplication/json · required
Schema: DocumentSigner
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Optional | Signer's display name. |
email | string (email) | Optional | Signer's email address — where the invitation is sent. |
sign | string | Optional | Signature state or captured signature reference. |
initials | string | Optional | Captured initials reference. |
group | string | Optional | Signer group, when signers are batched into rounds. |
requestRole | string | Optional | Role this signer plays, e.g. Signer, Approver, CC. |
companyName | string | Optional | Signer's company, when collected. |
title | string | Optional | Signer's job title, when collected. |
privateMessage | string | Optional | Message shown only to this signer. |
delegated | boolean | Optional | True once this slot has been delegated away.default: false |
delegatedTo | string | Optional | Email of the person this slot was delegated to. |
delegatedFrom | string | Optional | Email of the person who delegated this slot. |
formUrl | string | Optional | Read-only signing URL for this signer.read-only |
{
"name": "Sam Okafor",
"email": "sam.okafor@example.com",
"privateMessage": "Priya is out this week — please sign in her place."
}Responses
Signer delegated.
Returns ApiResponse
| Field | Type | Required | Description |
|---|---|---|---|
code | integer | Optional | HTTP status code, repeated in the body. |
message | string | Optional | Created object id, or a confirmation message. |
{
"code": 200,
"message": "Signer delegated successfully."
}The request was malformed or violated a validation rule.
Returns Error
{
"code": 400,
"message": "name is required"
}The API key is missing, malformed, unknown, expired, revoked, or inactive.
Returns Error
{
"code": 401,
"message": "Invalid API key"
}The envelope does not exist, or it belongs to another tenant. The two cases are deliberately indistinguishable.
Returns Error
{
"code": 404,
"message": "envelope not found"
}Per-key rate limit exceeded. Back off and retry.
Returns Error
{
"code": 429,
"message": "Rate limit exceeded. Try again later."
}Example request
curl -X POST "https://api-uat.softsages.com/core/api/v1/inkfree/envelopes/env_xyz789/signers/priya.sharma%40example.com/delegate" \
-H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Sam Okafor",
"email": "sam.okafor@example.com",
"privateMessage": "Priya is out this week — please sign in her place."
}'GET/api/v1/inkfree/signers
Find signer assignments by email
Requires the X-API-Key header
Returns every signer assignment matching an email address across the tenant's envelopes — pending and completed alike — newest first, capped at 100 items.
Keys in each row are the SQL column labels, in upper case. SIGNER holds the full signer object from the envelope; the remaining keys describe the envelope it belongs to.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
email | query | string (email) | Required | Signer email address to search for. Required.Example: priya.sharma@example.com |
since | query | string | Optional | Keyset cursor — ISO 8601 local date-time of the last item from the previous page. No Z suffix and no numeric offset; both are rejected with 400.Example: 2026-01-15T10:30:00 |
after | query | string | Optional | Keyset cursor — envelope id of the last item from the previous page. Pair with since.Example: env_xyz789 |
Responses
Up to 100 signer assignments.
Returns SignerAssignmentRow[]
| Field | Type | Required | Description |
|---|---|---|---|
SIGNER | DocumentSigner | Optional | — |
ENVELOPE_ID | string | Optional | Id of the envelope this assignment belongs to — a UUID. |
ENVELOPE_SUBJECT | string | Optional | Subject line of that envelope. |
ENVELOPE_STATUS | string | Optional | Status of that envelope. |
ENVELOPE_UPDATED_ON | string | Optional | When the envelope last changed. Also the sort key — results are newest-first. |
ENVELOPE_CREATED_ON | string | Optional | When the envelope was created. |
[
{
"SIGNER": {
"name": "Priya Sharma",
"email": "priya.sharma@example.com",
"sign": "signed"
},
"ENVELOPE_ID": "env_xyz789",
"ENVELOPE_SUBJECT": "NDA for review",
"ENVELOPE_STATUS": "Signed",
"ENVELOPE_UPDATED_ON": "2026-01-15T10:30:00",
"ENVELOPE_CREATED_ON": "2026-01-14T09:00:00"
}
]The request was malformed or violated a validation rule.
Returns Error
{
"code": 400,
"message": "name is required"
}The API key is missing, malformed, unknown, expired, revoked, or inactive.
Returns Error
{
"code": 401,
"message": "Invalid API key"
}Per-key rate limit exceeded. Back off and retry.
Returns Error
{
"code": 429,
"message": "Rate limit exceeded. Try again later."
}Example request
curl "https://api-uat.softsages.com/core/api/v1/inkfree/signers?email=priya.sharma%40example.com" \
-H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"