Skip to main content
POST
Use this endpoint instead of looping Create Lead when you have a list of leads to ingest. You get back a single response with counts of created, restored, duplicates, and errors — no per-row 409s, no manual retry logic.

Request Body

array
required
Array of lead objects. Each item supports the same fields as Create Lead — at minimum email, plus any of firstName, lastName, company, title, phone, linkedinUrl, website, notes, source, status, customFields, tags. Maximum 1000 leads per request.
boolean
default:"true"
When true (default), leads with the same email as a previously soft-deleted record are restored (their deletedAt is cleared and the existing fields are merged with the request payload). When false, those rows are counted as duplicates instead.

Response

In-request duplicate emails are caught — the first occurrence wins, subsequent rows with the same email are counted as duplicates.

Errors

Rate Limit

  • 100 requests per minute, per API key (the same v1 limit as every other endpoint).
  • A bulk import of 1000 leads counts as 1 request, not 1000. This is the whole point of the endpoint — your effective ingestion rate goes from 100 leads/minute (looping single create) to 100,000 leads/minute (looping this endpoint).
  • Response includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset headers.
For client-side retry/backoff patterns, see Rate Limiting.

When to use this vs. Create Lead