Documentation menu

Waivers and workflows

A gym or a rental counter does not prepare a document per customer. A workflow does it for them.

A workflow is a published template plus the rules for running it: who signs and in what order, whether the business countersigns, how long a link lives, when to remind, and what the form asks for beyond a name and an email.

Two ways in

  • A public page. Give the workflow a public_slug and a participant starts their own document by filling in a form at /f/<your-slug>/<public_slug> on signsealer.com. No API call from you at all; print it as a QR code, or put it in a booking email.
  • An API call. POST /v1/workflows/{id}/start with the participant's details. Use this when your system already knows who is coming.

What comes back

The document id and one token per signer — the participant's and every fixed role's — so you can hand the participant straight on to theirs rather than making them wait for an email.

{
  "document_id": "…",
  "title": "Liability waiver — Dana Reyes",
  "expires_at": "2026-10-15T00:00:00Z",
  "signers": [
    { "signer_id": "…", "email": "dana@example.com", "participant": true, "token": "…" }
  ]
}

One person, two roles

A signer role with "self": true is the participant again in a second role — a sole proprietor signing for the business and again as the personal guarantor, a parent for themselves and as guardian. The engine makes a second signer at the same address, named with the role's label after the person's name, emailed its own link rather than handed on, and in a sequential workflow that link refuses a signature until the earlier one is in. The two-party demo runs on it. Set it through the API; the portal's workflow editor does not offer it yet.

Fields beyond a signature

A template can require initials, a checkbox, a date or a photo, and the requirement travels with the template — it freezes when the template is published, because what you were asked to initial is part of what you agreed to.

A per_child requirement becomes one row per covered minor, named. A guardian initialling once for three children is not the same act as initialling three times, and a court asked which child a release covered should not be told "the template said per child".

The refusal is in the database, not the form. A signature is refused while anything required is unsupplied — so a second interface, a kiosk or an API caller cannot go around it. Your step form checking first is a courtesy that stops somebody being bounced; it is not the guarantee.

Ready to build? An API key takes a minute in the portal, and the free plan covers the first 25 agreements a month.

Get an API key