# Send an envelope without a template (/docs/guides/tutorials/send-an-envelope-without-a-template)


**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 [#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 [#prerequisites]

### 1. Organization automation identity [#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 [#2-authentication]

Obtain a bearer access token using your existing authentication flow.

### 3. A document [#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 [#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 [#step-1---shape-the-json-body]

### Core fields [#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) [#step-2---attach-the-pdf-or-docx]

Each entry in `documents` supplies a file using one of the supported methods.

### Option 1: Base64 data [#option-1-base64-data]

Provide:

* `data`
* `mime`
* `name`

This is the easiest option for scripts and server-generated PDFs, but large files can increase request size significantly.

### Option 2: HTTPS URI [#option-2-https-uri]

Provide:

* `uri`
* `name`

Verdocs fetches the file from your HTTPS endpoint or signed CDN URL. HTTP URLs are rejected.

### Option 3: Multipart upload [#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 [#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 [#multiple-documents]

If the envelope contains multiple files, set `order` on each document to keep rendering and signing behavior deterministic.

***

## Step 3 - Define recipients [#step-3---define-recipients]

Recipients should include the fields your workflow expects, typically:

* `role_name`
* `type`
* `first_name`
* `last_name`
* `email`

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 [#step-4---call-create-envelope]

### Request basics [#request-basics]

* Method: `POST`
* Authentication: `Authorization: Bearer &lt;access_token>`
* Content type: `application/json` for JSON-only requests

### Example request shape (base64 upload) [#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) [#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 [#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 [#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 [#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 [#in-summary]

To send an envelope without a template:

1. Omit `template_id`
2. Provide `name`
3. Attach one or more `documents`
4. 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](https://developers.verdocs.com/docs/reference/Rest-API/api-docs/envelopes/createEnvelope) · [Get envelope details](https://developers.verdocs.com/docs/reference/Rest-API/api-docs/envelopes/getEnvelope) · [Tagging Dynamic Documents](https://developers.verdocs.com/docs/guides/tutorials/tagging-dynamic-documents) · [Understanding Profiles](https://developers.verdocs.com/docs/guides/tutorials/understanding-profiles-or-why-do-my-api-calls-return-the-wrong-data)
