---
title: "Bulk invite"
url: "https://docs.signnow.com/docs/template/operations/bulk-invite"
type: "endpoint"
section: "template"
slug: "template/operations/bulk-invite"
method: "POST"
path: "/template/{document_id}/bulkinvite"
operation_id: "bulk-invite"
authorization: "bearer"
---

# Bulk invite

`POST /template/{document_id}/bulkinvite`

This endpoint allows users to create multiple invites to different signers from one template. A new document is generated for each signer and stored in the needed folder.

To create a bulk invite, you need a CSV file with signers' roles, emails, and document names. The format is the following:

**For one role**

```json

Recipient 1|signer1@email.com,document_name
Recipient 1|signer2@email.com,document_name

```

**For multiple roles**

```json

Recipient 1|signer1@email.com,Recipient 2|signer2@email.com,document_name1
Recipient 1|signer3@email.com,Recipient 2|signer4@email.com,document_name2

```

All the roles in the CSV must be assigned to at least one field in the template, and all the roles that exist in the template must be in the CSV.

## Authorization

bearer

## Path Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `document_id` | string | Yes | unique id of the template |

## Form Data Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `file` | file | Yes | A CSV file with a list of roles, email addresses, and document names |
| `folder_id` | string | Yes |  An ID of the folder where the documents should be stored. To find the ID, use <br>[`GET /user/folder`](/docs/folder/operations/get-all-folders) |
| `subject` | string | No | Custom email subject for all signers |
| `email_message` | string | No | Custom email message for all signers |
| `client_timestamp` | integer | No | The timestamp in UNIX code |
| `signature_type` | string | No | Type of QES signature requested from signers. Possible values: `eideasy`, `eideasy-pdf`, and `nom151`. To use it, a user must be a member of an organization with QES settings enabled.<br>For more information, see [QES user guide](/docs/qualified-electronic-signature) |

## Responses

### 200

Success

**Example** (`application/json`)

```json
{
  "status": "job queued"
}
```

### 400

* Incorrect file type (must be a CSV)
* Missing CSV file
* Missing `folder_id`
* Missing or extra recipients in the CSV file
* Document name in the CSV file is missing or incorrect
* QES is not set for this user's organization
* User cannot use QES if not in organization
* Incorrect `signature_type`. Allowed values: `eideasy`,`eideasy-pdf`, `nom151`


**Example** (`Missing CSV file`)

```json
{
  "errors": [
    {
      "code": 65536,
      "message": "Must upload one file"
    }
  ]
}
```

**Example** (`Missing folder_id`)

```json
{
  "errors": [
    {
      "code": 65544,
      "message": "The folder_id field is required."
    }
  ]
}
```

**Example** (`Incorrect file type`)

```json
{
  "errors": [
    {
      "code": 65578,
      "message": "Invalid file type."
    }
  ]
}
```

**Example** (`Incorrect signature type`)

```json
{
  "errors": [
    {
      "code": 65536,
      "message": "The signature_type should have one of the following values: \"eideasy\", \"nom151\", \"eideasy-pdf\"."
    }
  ]
}
```

**Example** (`User not in organization`)

```json
{
  "errors": [
    {
      "code": 65582,
      "message": "Organization required to send invite with advanced signing"
    }
  ]
}
```

**Example** (`Missing or extra recipients`)

```json
{
  "errors": [
    {
      "code": 65581,
      "message": "CSV file,line no 1 - missing required Actor's information. Required Actors = 2 and CSV provided information for Actors = 1"
    }
  ]
}
```

**Example** (`QES not set for organization`)

```json
{
  "errors": [
    {
      "code": 65582,
      "message": "Invalid advanced sign provider for sender organization"
    }
  ]
}
```

**Example** (`Document name missing or incorrect`)

```json
{
  "errors": [
    {
      "code": 65581,
      "message": "CSV file, line no 2 - document name is missing or invalid "
    }
  ]
}
```

## Code Examples

> Replace `$SIGNNOW_ACCESS_TOKEN` and any `{placeholder}` values before running.

### cURL

```bash
curl -X POST \
  "https://api.signnow.com/template/{document_id}/bulkinvite" \
  -H "Authorization: Bearer $SIGNNOW_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
```

---
*Full reference: https://docs.signnow.com/docs/template/operations/bulk-invite*
