Overview
When you callPOST /v1/envelopes/{id}/send, GetSigned:
- Generates a short-lived signed JWT for each signer (scoped to that signer + that envelope)
- Embeds the token in a signing URL:
https://sign.getsigned.ca/sign/{token} - Sends the signer an email (and SMS if a phone number was provided) with the link
The signer journey
Signer opens their link
The signing UI loads the document and records a
viewed event with IP, user agent, timestamp,
and geo.OTP verification
Depending on
authMethod, the signer receives an OTP via email or SMS and enters it to proceed.
This proves they control the email or phone used to invite them.E-signature consent
The signer reviews and accepts the e-signature disclosure (“I agree that my electronic signature
is legally binding”). This is recorded as a
consented event.Signing
The signer draws or types their signature and completes all required fields. Each field
completion is recorded as a
signed_field event.Auth methods
authMethod | How the signer proves identity |
|---|---|
email_otp | 6-digit OTP sent to the signer’s email |
sms_otp | 6-digit OTP sent to the signer’s phone (requires phone field on signer) |
none | No OTP — link access alone is sufficient (lower assurance, use with caution) |
Token security
Signing tokens are:- Short-lived — default TTL is 7 days (configurable per envelope via
expiresAt) - Single-use — the token is invalidated after signing completes
- Signer-scoped — a token for Signer A cannot be used to view or sign Signer B’s fields
- Envelope-scoped — cannot be used on any other envelope
Events recorded
Every action in the signing flow appends a row tosignature_events with:
| Field | Example |
|---|---|
event_type | viewed, otp_sent, otp_verified, consented, signed_field, signed, declined |
ip | 203.0.113.42 |
user_agent | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)... |
geo | { "country": "CA", "region": "ON", "city": "Toronto" } |
timestamp | 2026-06-19T14:32:00.000Z |
What happens after all signers complete
- All signature fields are flattened into the PDF
- A SHA-256 hash of the final document is computed → stored as
document_hash_final - An audit certificate page is appended (lists all events with timestamps, IPs, and hashes)
- A PKCS#7 digital signature is applied over the whole file (service certificate)
envelope.status→completed- A
envelope.completedwebhook event fires to your endpoint
GET /v1/envelopes/{id}/document.
Declined envelopes
A signer can decline at any point before completing. This:- Records a
declinedevent - Sets the envelope status to
declined - Fires an
envelope.declinedwebhook event - Invalidates all remaining signing links