Prerequisites
- A valid access token or Basic Auth credentials - see Platform Access
- Your tenant’s base URL set as
BASE_URL - A PDF document to upload (max 30 MB)
Bearer authentication. Replace the token and variable values with your own.
Overview
A signing package moves through these steps before a signer can act on it:- Create the package together with its stakeholders (status:
Draft) - Upload one or more documents
- Set the process - a signing step for the signer, followed by a receiver step
- Activate by setting status to
pending - Monitor status until the package is
Finished
Step 1: Create the package with its stakeholders
Create a package inDraft status. The package acts as a container - you build it up before
activating the signing flow. Stakeholders are the people involved in the package, and you can
create them directly in the same call. Here we add two:
- Jane Smith, who will sign the document
- John Doe, who will receive a copy of the fully signed document
Id and both stakeholder Ids from the response - you will need them in the
next steps.
You can also add stakeholders to an existing draft package later with
POST /packages/{packageId}/stakeholders - useful when the participants are not known at
creation time.Get notified instead of polling
For a real integration, set aCallBackUrl when you create the package. NSEV then sends your
system an HTTP POST each time the package’s status changes, so you do not have to poll for
progress (see Step 5):
Step 2: Upload a document
Documents are sent as base64-encoded content in a JSON request body. Property names are PascalCase, andDocumentOptions (with a ContentType and Base64data) is required.
Encode your PDF:
Id from the response:
A document must not exceed 30 MB. A package must not exceed 150 MB in total and should not contain
more than 15 documents.
Step 3: Set the process
The process defines who does what, and in which order. It is a list of steps that run sequentially; each step is a set of actors (a stakeholder plus the action they perform) that run in parallel within that step. Set the whole process in one call. Here it has two steps:- Jane signs - the
Signeractor carries a signing element that specifies where on the document the signature is placed - John receives the fully signed document - the
Receiveractor takes no action, and the receiver step must always come last
200 OK response confirms the process was set. The call overwrites the package’s entire
process, so it is safe to repeat while you iterate on a draft; to add steps incrementally instead,
use POST /packages/{packageId}/process.
The signing element coordinates are in points (1 point = 1/72 inch) from the top-left of the page.
Adjust Page, Top, and Left to position the signature field where you want it on your document.
A signing field must be at least 50 × 30 points.
A step may not mix actor types (except FormFillers with Approvers), approval and form-filling
steps must precede all signing steps, and the receiver step is always parallel and always last.
Step 4: Activate the package
Once the package is fully configured, set its status topending to start the signing workflow.
The signer will receive an email notification with a link to sign; once all signing is complete,
the receiver is notified with a link to download the signed document.
204 No Content response confirms the package was activated.
Step 5: Monitor status
You have two ways to learn when the package progresses, and you can use either:- Callbacks (recommended for integrations). If you set a
CallBackUrlin Step 1, NSEVPOSTs your system on each status change, so you do not have to poll. This reacts immediately and scales better. See Callbacks and redirects. - Polling (fine for simple flows). Call
GET /packages/{packageId}/statusperiodically until the package reaches a terminal status.
Once the status is
Finished, download the signed documents with GET /packages/{packageId}/download.
Next steps
- Try the faster variant: Instant package creates the package, document, signer, and signing field in a single call
- Wire up Callbacks and redirects to replace polling and control where signers land after acting
- Understand the objects you assembled here in The package model
- Browse the full set of operations in the API Reference
- Review Best Practices for error handling, pagination, and security