Send an envelope without a template
Walk through the process of creating and sending an envelope when you already have a PDF (or DOCX) and do not want to create a Verdocs `Template` first.
Goal: Create and send a signing envelope when you already have a PDF (or DOCX) and do not want to create a Verdocs template first.
Who this is for: Backend engineers automating one-off agreements, generated documents, or workflows where the PDF is produced by your own system.
What you will use: The same Create Envelope capability you use with templates—omit template_id and supply the document another way. Official parameters and edge cases always live in the Create Envelope REST reference and the JS/TS SDK if you call Verdocs from Node or the browser.
When this pattern fits
Use this approach when:
- Your app already has the final (or near-final) PDF, or a DOCX you convert through Verdocs-supported upload paths.
- You do not need a reusable template in the Verdocs UI for this document family.
- You are comfortable defining recipients (and optional fields) in the create request, or relying on tags inside the PDF for field placement.
If you send the same agreement shape repeatedly and non-technical users edit it in Verdocs, a template-based workflow is usually the better fit.
Prerequisites
1. Organization automation identity
A profile and API key (or OAuth client credentials) your server uses to call Verdocs, scoped to the correct organization.
If API results seem inconsistent between environments or users, review the “Understanding Profiles” guide.
2. Authentication
Obtain a bearer access token using your existing authentication flow.
3. A document
Typically a PDF, or a DOCX Verdocs can convert during upload.
Check the Create Envelope reference for supported MIME types, filename expectations, and account-specific limits.
The idea in one sentence
If you do not send template_id, you must send a name and at least one entry in documents.
Recipients are still required, just like any other envelope workflow. Verdocs creates the envelope, attaches your file(s), wires recipients, and derives fields from your request and/or PDF tags—without creating a saved template record first.
Step 1 — Shape the JSON body
Core fields
| Field | Required without template? | Notes |
|---|---|---|
name | Yes | Envelope title users see in the UI. |
template_id | No | Omit it entirely for this workflow. |
documents | Yes | Array of uploaded or referenced documents. |
recipients | Yes | At least one signer or participant. Recipient email addresses must be unique within the envelope. |
fields | Usually optional | Include if you place fields via API instead of PDF tags. |
no_contact | Optional | Set to true if your app—not Verdocs—delivers signing links. |
Optional envelope-level settings such as reminders, expiration, or visibility are documented in the Create Envelope reference.
Step 2 — Attach the PDF (or DOCX)
Each entry in documents supplies a file using one of the supported methods.
Option 1: Base64 data
Provide:
datamimename
This is the easiest option for scripts and server-generated PDFs, but large files can increase request size significantly.
Option 2: HTTPS URI
Provide:
uriname
Verdocs fetches the file from your HTTPS endpoint or signed CDN URL. HTTP URLs are rejected.
Option 3: Multipart upload
Some integrations upload files as multipart form data alongside the JSON payload. Use the exact field names and request structure documented for your SDK or REST version.
DOCX conversion
If you upload a DOCX, Verdocs converts it to PDF during ingestion. Always verify supported MIME types and conversion behavior in the latest API reference.
Multiple documents
If the envelope contains multiple files, set order on each document to keep rendering and signing behavior deterministic.
Step 3 — Define recipients
Recipients should include the fields your workflow expects, typically:
role_nametypefirst_namelast_nameemail
Use sequence (or order, depending on API version) to control routing order for multiple signers.
If you plan to use KBA, passcodes, or other verification methods, additional authentication fields may be required. For a first integration, it is usually easier to validate the basic signing flow before enabling advanced recipient authentication.
Step 4 — Call Create Envelope
Request basics
- Method:
POST - Authentication:
Authorization: Bearer <access_token> - Content type:
application/jsonfor JSON-only requests
Example request shape (base64 upload)
{
"name": "Order form — Acme Corp",
"no_contact": false,
"documents": [
{
"name": "OrderForm.pdf",
"mime": "application/pdf",
"data": "<base64-encoded PDF bytes>",
"order": 1
}
],
"recipients": [
{
"role_name": "Customer",
"type": "signer",
"first_name": "Jane",
"last_name": "Signer",
"email": "jane.signer@example.com",
"sequence": 1
}
]
}Example request shape (HTTPS URL)
{
"name": "Order form — Acme Corp",
"documents": [
{
"name": "OrderForm.pdf",
"uri": "https://cdn.example.com/contracts/abc123.pdf",
"order": 1
}
],
"recipients": [
{
"role_name": "Customer",
"type": "signer",
"first_name": "Jane",
"last_name": "Signer",
"email": "jane.signer@example.com",
"sequence": 1
}
]
}On success, Verdocs returns an envelope object your integration can persist, typically including at least the envelope id and current status.
Step 5 — What happens next
After creation:
- Verdocs processes uploads asynchronously (conversion, previews, tag detection, and field extraction).
- Your integration can either:
- poll Get Envelope Details until the envelope is ready, or
- subscribe to webhooks for lifecycle updates.
Contact behavior
If no_contact is false, Verdocs sends recipient invitations automatically according to product workflow rules.
If no_contact is true, your application is responsible for retrieving and delivering signing links or starting signing sessions directly.
Troubleshooting
| Symptom | Things to check |
|---|---|
| 400 on create | Missing name or documents; duplicate recipient emails; invalid expiration values. |
Rejected uri | URL must use HTTPS and be reachable from Verdocs infrastructure. |
| “Recipient missing first/last” | Each recipient requires first_name and last_name. |
| Fields missing | Either provide fields explicitly or include valid PDF tags. |
In Summary
To send an envelope without a template:
- Omit
template_id - Provide
name - Attach one or more
documents - Include
recipients
The result is the same envelope workflow used by template-based sends—without maintaining a reusable template in Verdocs first.
Primary Links: Create Envelope · Get envelope details · Tagging Dynamic Documents · Understanding Profiles
Securing Your Webhooks: HMAC vs OAuth
Anyone on the internet can send an HTTP request to a public URL. Verdocs provides two ways to verify the caller is actually Verdocs: HMAC (shared-secret signatures) and OAuth client credentials (short-lived bearer tokens). Choose the model that best matches your platform’s existing security architecture.
Bring-Your-Own Notification
Choose the right model for how signers hear about an envelope—either Verdocs sends the standard invitation and lifecycle notifications, or your application owns every outbound message while Verdocs still powers signing workflows.