letssign.now docs

Documents

Holistic doc + signers, the signed PDF, the audit-trail PDF.

A document is the contract — one PDF, one or more signers, plus metadata. The documentId returned by POST /v1/signing-requests addresses all three endpoints below.

Get document

Holistic view: doc fields, every signer with their status, plus an aggregate rollup status. Use this when you want a single poll to get the whole picture.

{
  "id":                 "8a1e4f9a-…",
  "filename":           "msa.pdf",
  "sha256":             "4f9a…d21c",
  "status":             "partial",
  "observers":          ["compliance@acme.com"],
  "callbackConfigured": true,
  "createdAt":          "2026-04-29T10:30:00Z",
  "signers": [
    {
      "id":         "11111111-…",
      "email":      "tenant@example.com",
      "role":       "tenant",
      "status":     "signed",
      "order":      1,
      "expiresAt":  "2026-05-13T10:30:00Z",
      "signingUrl": "https://yourco.letssign.now/en/sign/abc…"
    },
    {
      "id":         "22222222-…",
      "email":      "owner@example.com",
      "role":       "landlord",
      "status":     "viewed",
      "order":      2,
      "expiresAt":  "2026-05-13T10:30:00Z",
      "signingUrl": "https://yourco.letssign.now/en/sign/def…"
    }
  ],
  "placement": null
}

status values:

ValueMeaning
awaiting_placementA manual placement is queued; no signing requests created yet.
pendingAll signers still need to sign.
partialAt least one signer has signed; one or more still in flight.
signedEvery signer has signed. The signed PDF + audit-trail PDF are ready.
expiredAll signers' TTLs elapsed.
withdrawnAll signers were withdrawn.

Per-signer status uses the same enum less the rollups (pending | viewed | signed | declined | expired | withdrawn | queued).

Download the signed PDF

GET /v1/documents/{id}/signed

Streams the fully PAdES-sealed PDF — every signer's signature appended (incremental update), an RFC 3161 trusted timestamp embedded. Content-Type: application/pdf with Content-Disposition: inline; filename="msa.pdf" so a browser tab opens it directly. Returns 409 not_complete while any signer still owes a signature.

curl -OJ -H "Authorization: Bearer $LSK_KEY" \
  https://api.letssign.now/v1/documents/$DOC_ID/signed

Download the audit-trail PDF

GET /v1/documents/{id}/audit-trail

Generated on demand. Contains the document SHA-256, the cumulative cert serial, the TSA timestamp + provider, and a chronological event log with masked IPs and user agents. Same Content-Disposition / content-type as /signed above. Returns 409 not_complete while signing is still in flight.

curl -OJ -H "Authorization: Bearer $LSK_KEY" \
  https://api.letssign.now/v1/documents/$DOC_ID/audit-trail

Both download endpoints are rate-limited at 60 requests/minute/key along with the rest of /v1/*. They're meant for occasional download-into-DMS, not high-frequency polling. If you're building a dashboard, fetch each document's signed PDF once and cache.