Batch Operations
Batch endpoints reduce API calls and improve throughput for bulk operations.
⚠️ Deduplication is not included in batch create
POST /leads/batchskips duplicate detection for performance. If you need deduplication, use singlePOST /leadscalls, or pre-deduplicate your dataset before importing.
Limits
Section titled “Limits”| Plan | Max per batch |
|---|---|
| Free | 100 |
| Pro | 500 |
Exceeding the limit returns 400 Bad Request — the entire request is rejected and no leads are created.
Batch Create
Section titled “Batch Create”POST /leads/batchReturns 201 Created if all succeed, 207 Multi-Status on partial failure.
207 Multi-Statusmeans at least one lead failed. Always check theerrorsarray even when the status is 207. Entries increatedwere saved successfully.
{ "leads": [ { "name": "Lead 1", "source": "import", "city": "Athens" }, { "name": "Lead 2", "source": "import", "city": "Berlin" } ]}Response:
{ "created": [{ "index": 0, "id": "cl_...", "created_at": 1703520000 }], "errors": [{ "index": 1, "message": "name is required" }], "total": 2, "success": 1, "failed": 1}Batch Update
Section titled “Batch Update”PUT /leads/batchApply the same partial update to multiple leads:
{ "ids": ["cl_aaa...", "cl_bbb...", "cl_ccc..."], "data": { "category": "Restaurant", "tags": ["reviewed"] }}Batch Delete
Section titled “Batch Delete”DELETE /leads/batch{ "ids": ["cl_aaa...", "cl_bbb..."] }- Use
207responses to identify and retry failed entries byindex. - For very large datasets (10k+ leads), split into multiple batch requests and respect your plan’s rate limits.