Skip to content

In-person and kiosk signing

Not every signature starts with an email. At a counter, the participant signs on a tablet in front of you: a quick-sign case skips the invitation mail, and a registered kiosk device opens the case by itself when it is ready.

Create the case with "quickSign": true. Its participants get no invitation and no reminders; they sign through their signerUrl, which you open on the device yourself. Participants who get mail (notify not false) still receive a mail with a link to the signed document when the case is done.

{
"title": "Handover protocol 2026/0142",
"validUntil": "2026-09-30T18:00:00Z",
"quickSign": true,
"participants": [
{"firstName": "Jana", "lastName": "Nováková", "email": "jana.novakova@example.com", "language": "sk"},
{"firstName": "Peter", "lastName": "Horváth", "email": "peter.horvath@example.com", "language": "sk"}
]
}

A kiosk is a device registered to your tenant. It listens on its own real-time channel and opens each case it is sent.

  1. Register the device once with POST /tenant/devices:

    Terminal window
    curl -s -X POST "$API/tenant/devices" -H "Authorization: Bearer $TOKEN" \
    -H 'Content-Type: application/json' -d '{"name": "iPad reception"}'

    It answers 201 with deviceId, name, created, channel and token. The token is shown this once; store it on the device. Registering the device again replaces the token.

  2. Subscribe the device to /devices/{tenantId}/{deviceId} with its token.

  3. Create the case for the device: "quickSign": true and "device": {"deviceId": "…"}. A device you have not registered answers 400 UNKNOWN_DEVICE, and device without quickSign fails validation.

  4. Upload the document. When the case is ready for its first participant, the device receives device.open_case with {caseId, participantId, signerUrl, title} and opens signerUrl.

  5. Hand the case on. After a signature, send the next participant to a device:

    Terminal window
    curl -s -X POST "$API/cases/$CASE_ID/participants/$NEXT_PARTICIPANT_ID/open" \
    -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
    -d '{"deviceId": "…"}'

    Any registered device of your tenant can be named, not only the one the case was created with.

Status code When
202 {caseId, participantId, deviceId}: the device was told
400 UNKNOWN_DEVICE the device is not registered to your tenant
404 the case or the participant does not exist
409 ALREADY_SIGNED the participant has signed already
409 NOT_QUICK_SIGN the case was not created with quickSign
409 PARTICIPANT_NOT_READY the document has not been uploaded yet
410 CASE_NOT_ACTIVE nobody can sign the case any more
503 EVENTS_UNAVAILABLE the event could not be published; try again

Unlike other real-time events, the hand-off is not best effort: the route answers 202 only once the event is published.

The signing page is the same as for a link sent by mail: the document, the consent text, the signature pad and, when the case asks for it, a one-time code. The audit trail records the invitation channel as in_person or device, so the evidence summary shows how the participant was reached.