Skip to content

Sign

POST
/participant/{participantId}/signature
curl --request POST \
--url https://api-sandbox.trustink.io/participant/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/signature \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "encodedSignature": "example", "fieldIds": [ "example" ], "signatures": [ { "page": 1, "x": 1, "y": 1, "width": 1, "height": 1, "unit": "pt" } ], "pageSize": { "width": 1, "height": 1 }, "consent": { "textVersion": "example", "acceptedAt": "2026-04-15T12:00:00Z" }, "client": { "timezone": "example", "language": "example", "screen": { "width": 1, "height": 1 }, "viewedAllPages": true } }'

Stores the participant’s signature with their consent and resumes the workflow. Either the predefined fields (fieldIds) or, without them, the signer’s rectangles (signatures); coordinates in Signature fields and coordinates, consent in Audit trail.

participantId
required

The participant id: the path of the signing link, or participants[].id of the case.

string format: uuid
Trustink-Otp-Session

The otpSession of POST .../otp/verify. Needed for a case with multiFactorType: the document links, the signature and the signed document.

string
Trustink-Pin

Deprecated: the case PIN, for a case created with pin and without multiFactorType.

string
Media typeapplication/json
object
encodedSignature
required
string
fieldIds
Array<string>
>= 1 items
signatures
Array<object>
>= 1 items
object
page
required
integer
>= 1
x
required
number
y
required
number
width
required
number
> 0
height
required
number
> 0
unit
string
default: pt
Allowed values: pt fraction
pageSize
object
width
required
number
> 0
height
required
number
> 0
consent
required
object
textVersion
required
string
>= 1 characters <= 64 characters
acceptedAt
required
string format: date-time
client
object
timezone
string
>= 1 characters <= 64 characters
language
string
>= 1 characters <= 35 characters
screen
object
width
required
integer
> 0 <= 100000
height
required
integer
> 0 <= 100000
viewedAllPages
boolean

The signature is stored; no body.

The request failed validation: validationErrors says where and why.

Media typeapplication/json
object
message
required
string
validationErrors
required
Array<object>
object
instancePath
required
string
keyword
required
string
params
required
object
key
additional properties
message
required
string
Examplegenerated
{
"message": "example",
"validationErrors": [
{
"instancePath": "example",
"keyword": "example",
"params": {
"additionalProperty": "example"
},
"message": "example"
}
]
}

The case has a multiFactorType and the request has no valid Trustink-Otp-Session, or the signing link is not valid. code: OTP_REQUIRED.

Media typeapplication/json
object
code
string
message
required
string
Examplegenerated
{
"code": "example",
"message": "example"
}

No such participant or case.

Media typetext/plain
string
Example
Case not found

The participant has signed already. code: ALREADY_SIGNED.

Media typeapplication/json
object
code
string
message
required
string
Examplegenerated
{
"code": "example",
"message": "example"
}

Nobody can sign the case any more (status says why), or a DONE case’s link has passed validUntil; senderName names who sent the request when the tenant gave a sender name. code: CASE_NOT_ACTIVE, LINK_EXPIRED.

Media typeapplication/json
object
code
string
message
required
string
Examplegenerated
{
"code": "example",
"message": "example"
}

Something failed on the platform, or the request timed out (code TIMEOUT, 503); try again.

Media typeapplication/json
object
code
string
message
required
string
Examplegenerated
{
"code": "example",
"message": "example"
}