On this page
POST/campaigns/:campaignId/leads/batch-delete
Credits: None (no refund of insert credits)
LinkedIn risk: None
Rate limit: 10 / minute (max 100 items)
Optional Idempotency-Key (TTL 24h).
Purpose
Permanently delete up to 100 leads from a campaign. Same outcome as in-app bulk delete (lead removed; campaign totals refreshed). Irreversible — no credit refund.
Request
POST /campaigns/search_abc/leads/batch-delete
X-API-Key: sk_live_...
Idempotency-Key: optional-key
Content-Type: application/json
{
"leadIds": ["lead_xyz", "lead_abc"]
}
| Field | Notes |
|---|---|
leadIds | Yes — non-empty array, length 1…100 (hard max) |
Duplicate ids: first wins; later → item validation_error.
409 conflict if the campaign is still finding/importing leads.
Idempotency: array order matters. Persist 200 only when summary.deleted > 0. Retry of already-deleted ids → not_found (safe).
Response 200
{
"results": [
{ "index": 0, "leadId": "lead_xyz", "status": "deleted" }
],
"summary": {
"total": 1,
"deleted": 1,
"not_found": 0,
"validation_error": 0,
"failed": 0
},
"creditsCharged": 0,
"reconciliationFailed": false
}
Statuses: deleted · not_found · validation_error · failed.
reconciliationFailed: true means deletes succeeded but campaign totals/stats refresh failed — retry is usually unnecessary for the delete itself.
MCP
Tool: delete_leads_batch (destructiveHint: true, idempotentHint: true — confirm first; retry of gone ids → not_found).
See also
- List leads — verify remaining leads after delete