REST API reference
Base URL: https://notriv.com/api/v1. Send your key as Authorization: Bearer nrv_.... Requests and responses are JSON. Creating envelopes and templates also accepts multipart/form-data so you can upload a PDF.
| Resource | Endpoints |
|---|---|
| Envelopes | Create, list, get, send, void, remind, signing link, files |
| Templates | Create, list, get, update, delete, file |
| Webhook endpoints | Create, list, get, update, delete |
| Events | List, get |
| Account and balance | Who a key belongs to, signatures left |
| Test helpers | Sign for everyone (test mode only) |
Envelopes
Create an envelope
Creates an envelope from a template or a PDF and sends it, unless send is false. Returns 201 with the envelope.
| Name | Required | Type | Description |
|---|---|---|---|
signers | True | array | object | A list [{ name, email, role?, order? }], or an object keyed by role { client: { name, email } }. Up to 10. |
template | False | string | A template ID. Send this or a file. |
file | False | file | The PDF, as a multipart part named file. Up to 25 MB and 200 pages. |
file_base64 | False | string | The PDF as base64 in a JSON request, with file_name. |
data | False | object | Values for data fields, e.g. { "purchase_price": "$250,000" }. Unknown names are rejected. |
fields | False | array | Exact field positions for a PDF. See Place fields. |
signature_page | False | boolean | Add a signature page when the PDF has no signature fields. |
signing_order | False | boolean | Signers sign one after another. Default false. |
delivery | False | string | email (default) or embedded. |
name | False | string | Envelope name. Defaults to the template or file name. |
subject | False | string | Email subject for signers. |
message | False | string | Message shown in the signing email. |
send | False | boolean | Default true. false creates a draft. |
expires_in_days | False | integer | 1 to 90. Signing links stop working after this. |
metadata | False | object | Up to 20 string keys of your own. Returned on every read and webhook. |
In multipart requests, send objects as JSON strings, or put every parameter in one part named payload.
List envelopes
| Name | Required | Type | Description |
|---|---|---|---|
limit | False | integer | 1 to 100. Default 10. |
starting_after | False | string | An envelope ID. Returns the page after it. |
template | False | string | Only envelopes made from this template. |
{ "object": "list", "url": "/v1/envelopes", "has_more": true, "data": [ { "id": "env_...", ... } ] }Get an envelope
Returns the envelope object.
Send a draft
Sends an envelope created with send: false. In live mode this uses one signature from your plan.
Void an envelope
| Name | Required | Type | Description |
|---|---|---|---|
reason | False | string | Shown to signers. Defaults to “Voided via API”. |
Completed envelopes can't be voided.
Remind signers
Emails every signer who can sign now. Each signer is reminded at most once an hour. Returns the signers reminded and skipped.
Get a signing link
| Name | Required | Type | Description |
|---|---|---|---|
signer | False | string | A role (client) or signer ID. Optional if only one signer is left. |
{ "object": "signing_url", "signer": "sgn_...", "role": "client", "url": "https://notriv.com/sign/...", "expires_at": "2026-10-27T15:04:06.000Z" }Download files
kind is signed, audit_trail or original. Returns a download link valid for 5 minutes. Signed and audit trail files exist once the envelope is completed.
Templates
Create a template
| Name | Required | Type | Description |
|---|---|---|---|
name | True | string | Template name. |
file | True | file | The PDF with tags or form fields (or file_base64 + file_name in JSON). |
fields | False | array | Exact field positions, instead of tags. |
roles | False | array | Signer roles in signing order. Defaults to the order they appear. |
description | False | string | For your team. |
Other template endpoints
PATCH accepts name, description, roles, and fields: a list the same length as the template's fields, each with any of key, role, filled_by, required. DELETE archives the template; envelopes already sent are unaffected.
Webhook endpoints
| Name | Required | Type | Description |
|---|---|---|---|
url | True | string | A public https:// URL. |
events | False | array | Event types, or ["*"] for all. Default all. |
description | False | string | For your team. |
The response includes secret, shown only here. You can reveal it again in the dashboard.
Events
| Name | Required | Type | Description |
|---|---|---|---|
type | False | string | Only events of this type, e.g. envelope.completed. |
limit | False | integer | 1 to 100. Default 10. |
starting_after | False | string | An event ID. |
Account and balance
Returns the account and key a request is using, and whether it's live. Handy to check a key works.
Returns how many envelopes you can still send this period, and a link to buy more.
Test helpers
Test keys only. Signs for every remaining signer, builds the real signed PDF and audit trail, and sends the signer_completed and completed webhooks.
Response headers
| Header | Meaning |
|---|---|
Notriv-Request-Id | Unique ID for this request. Quote it to support. |
Notriv-Mode | test or live |
RateLimit-Limit / -Remaining / -Reset | Your per-minute allowance and when it resets |
Idempotent-Replayed | true when a stored response was returned for a retried request |