Skip to main content

Download the completed envelope

Once an envelope reaches completed, two PDFs are available: the signed document and an audit certificate listing every signer action with timestamps and IP addresses. Both are served directly by the API.

Signed document

curl https://api.permissio.us/v1/envelopes/env_abc123/documents/signed \
-H "Authorization: Bearer sk_live_your_key_here" \
--output signed.pdf
Node.js
const res = await client.envelopes.getSignedDocument("env_abc123");
await fs.promises.writeFile("signed.pdf", Buffer.from(await res.arrayBuffer()));

Audit certificate

curl https://api.permissio.us/v1/envelopes/env_abc123/certificate \
-H "Authorization: Bearer sk_live_your_key_here" \
--output certificate.pdf

Both endpoints stream application/pdf. The signed document is integrity-checked against its stored SHA-256 before it's served.

Only available once completed

These artifacts exist only after the envelope reaches completed. Requesting them for a draft or in-progress envelope returns HTTP 409 with a clear error code — poll GET /v1/envelopes/{id} for status: "completed", or (better) wait for the envelope.completed webhook before downloading.

Skip the extra call with webhooks

The envelope.completed webhook payload includes signed_document_url, audit_certificate_url, and signed_document_sha256, so you can fetch (and verify) the PDF as soon as the event arrives without polling. See Webhooks → Event catalog.