Skip to content

Bulk Sending

Bulk Send lets you send the same template to up to 500 recipients in a single API call. Each recipient gets their own individual document with a unique signing link.

Before creating a bulk send, you need:

  1. A template with at least one signer slot and fields configured
  2. An API key with bulk_sends.create scope
  3. A list of signers with names and emails
Terminal window
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": "Hi! Please review and sign your vendor agreement for Q3 2026.",
"signers": [
{ "name": "Alice Johnson", "email": "[email protected]" },
{ "name": "Bob Williams", "email": "[email protected]" },
{ "name": "Carol Davis", "email": "[email protected]", "phone": "+1555123456" }
]
}'

A common pattern is reading signer data from a CSV file:

import { readFileSync } from 'fs';
function parseCSV(filePath) {
const content = readFileSync(filePath, 'utf-8');
const lines = content.trim().split('\n');
const headers = lines[0].split(',').map(h => h.trim());
return lines.slice(1).map(line => {
const values = line.split(',').map(v => v.trim());
return Object.fromEntries(headers.map((h, i) => [h, values[i]]));
});
}
// CSV format: name,email,phone
const signers = parseCSV('./signers.csv');
const { data } = await insignerFetch('/bulk-sends', {
method: 'POST',
body: JSON.stringify({
templateId: 'tpl_abc123',
name: 'Batch from CSV',
signers
})
});

Check the status of a bulk send:

Terminal window
curl -X GET https://app.insigner.co/api/v1/bulk-sends/bs_abc123 \
-H "Authorization: Bearer isk_YOUR_API_KEY"
{
"data": {
"id": "bs_abc123",
"name": "Q3 Vendor Agreements",
"status": "completed",
"totalCount": 150,
"sentCount": 148,
"failedCount": 2
}
}

Or subscribe to webhook events for real-time notifications:

{
"events": ["bulk_send.completed", "bulk_send.failed"]
}
RestrictionLimit
Maximum signers per bulk send500
Time between bulk sends5 minutes per organization
Concurrent bulk sends1 at a time

If a bulk send is already processing, the API returns 409 Conflict. Wait for it to complete before starting another.