Bulk Send
Bulk Send lets you send the same template to up to 500 recipients in a single API call. Each recipient gets their own document instance with a unique signing link.
List bulk sends
Section titled “List bulk sends”GET /api/v1/bulk-sendsQuery parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
cursor | string | — | Pagination cursor |
limit | integer | 25 | Items per page (1–100) |
status | string | — | Filter: processing, completed, failed |
Required scope: bulk_sends.read
curl -X GET "https://app.insigner.co/api/v1/bulk-sends?status=completed" \ -H "Authorization: Bearer isk_YOUR_API_KEY"const res = await fetch( 'https://app.insigner.co/api/v1/bulk-sends?status=completed', { headers: { 'Authorization': 'Bearer isk_YOUR_API_KEY' } });const { data, meta } = await res.json();res = requests.get( "https://app.insigner.co/api/v1/bulk-sends", headers={"Authorization": "Bearer isk_YOUR_API_KEY"}, params={"status": "completed"})Response
{ "data": [ { "id": "bs_abc123", "name": "Q3 Vendor Agreements", "status": "completed", "totalCount": 150, "sentCount": 148, "failedCount": 2, "templateId": "tpl_abc123", "createdAt": "2026-05-28T10:00:00.000Z", "updatedAt": "2026-05-28T10:05:00.000Z" } ], "meta": { "count": 1, "hasMore": false, "nextCursor": null }}Create a bulk send
Section titled “Create a bulk send”POST /api/v1/bulk-sendsCreates individual documents from a template for each signer and sends them immediately. The operation is processed synchronously — the response returns after all documents are created.
Required scope: bulk_sends.create
Rate limit: 1 bulk send per 5 minutes per organization.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
templateId | string | ✅ | Template to use |
name | string | ✅ | Bulk send name (1–200 chars) |
emailMessage | string | — | Custom email message (max 1000 chars) |
signers | array | ✅ | Array of signer objects (1–500) |
signers[].name | string | ✅ | Signer name (1–200 chars) |
signers[].email | string | ✅ | Signer email (max 254 chars) |
signers[].phone | string | — | Phone number (max 20 chars) |
curl -X POST https://app.insigner.co/api/v1/bulk-sends \ -H "Authorization: Bearer isk_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": "tpl_abc123", "name": "Q3 Vendor Agreements", "emailMessage": "Please sign your vendor agreement for Q3.", "signers": [ { "name": "Alice Johnson", "email": "alice@vendor-a.com" }, { "name": "Bob Williams", "email": "bob@vendor-b.com" }, { "name": "Carol Davis", "email": "carol@vendor-c.com" } ] }'const res = await fetch('https://app.insigner.co/api/v1/bulk-sends', { method: 'POST', headers: { 'Authorization': 'Bearer isk_YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ templateId: 'tpl_abc123', name: 'Q3 Vendor Agreements', emailMessage: 'Please sign your vendor agreement for Q3.', signers: [ { name: 'Alice Johnson', email: 'alice@vendor-a.com' }, { name: 'Bob Williams', email: 'bob@vendor-b.com' }, { name: 'Carol Davis', email: 'carol@vendor-c.com' } ] })});const { data } = await res.json();res = requests.post( "https://app.insigner.co/api/v1/bulk-sends", headers={"Authorization": "Bearer isk_YOUR_API_KEY"}, json={ "templateId": "tpl_abc123", "name": "Q3 Vendor Agreements", "emailMessage": "Please sign your vendor agreement for Q3.", "signers": [ {"name": "Alice Johnson", "email": "alice@vendor-a.com"}, {"name": "Bob Williams", "email": "bob@vendor-b.com"}, {"name": "Carol Davis", "email": "carol@vendor-c.com"} ] })Response 201 Created
{ "data": { "id": "bs_def456", "name": "Q3 Vendor Agreements", "status": "completed", "totalCount": 3, "sentCount": 3, "failedCount": 0, "templateId": "tpl_abc123", "createdAt": "2026-05-28T12:00:00.000Z" }}Get bulk send status
Section titled “Get bulk send status”GET /api/v1/bulk-sends/{id}Returns details and progress for a specific bulk send.
Required scope: bulk_sends.read
curl -X GET https://app.insigner.co/api/v1/bulk-sends/bs_abc123 \ -H "Authorization: Bearer isk_YOUR_API_KEY"const res = await fetch( 'https://app.insigner.co/api/v1/bulk-sends/bs_abc123', { headers: { 'Authorization': 'Bearer isk_YOUR_API_KEY' } });const { data } = await res.json();res = requests.get( "https://app.insigner.co/api/v1/bulk-sends/bs_abc123", headers={"Authorization": "Bearer isk_YOUR_API_KEY"})Response
{ "data": { "id": "bs_abc123", "name": "Q3 Vendor Agreements", "status": "completed", "totalCount": 150, "sentCount": 148, "failedCount": 2, "emailMessage": "Please sign your vendor agreement for Q3.", "templateId": "tpl_abc123", "createdAt": "2026-05-28T10:00:00.000Z", "updatedAt": "2026-05-28T10:05:00.000Z" }}Delete a bulk send
Section titled “Delete a bulk send”DELETE /api/v1/bulk-sends/{id}Soft-deletes the bulk send and all associated documents.
Required scope: bulk_sends.delete
Response: 204 No Content