LeadsBulk create/update leads

Bulk create/update leads

Bulk import leads from a JSON array (max 5,000 per request). Processed in batches of 1,000 with up to 10 concurrent batches.

Options:

  • skipDuplicates (default true): When true, existing leads (by email) are skipped. When false, existing leads are updated with the new data.
  • dataCleanup (default true): Normalize emails, phone numbers, LinkedIn URLs, and strip special characters from names.
  • tag: Optional tag to apply to all imported leads.

Each lead object must include email. Standard fields (firstName, lastName, companyName, etc.) are mapped automatically. Any unrecognized keys become custom fields stored with the custom_ prefix. A nested customFields object is also accepted; unprefixed keys are normalized the same way. Custom field keys cannot contain ..

curl -X POST "https://api.sendkit.ai/v1/leads/bulk" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -d '{
  "leads": [
    {
      "email": "john@acme.com",
      "firstName": "John",
      "lastName": "Doe",
      "companyName": "Acme Corp",
      "jobTitle": "VP of Sales",
      "custom_industry": "SaaS"
    },
    {
      "email": "jane@example.com",
      "firstName": "Jane",
      "lastName": "Smith",
      "companyName": "Example Inc"
    }
  ],
  "skipDuplicates": true,
  "dataCleanup": true,
  "tag": "batch-2025-06"
}'
{
  "success": true,
  "data": {
    "imported": 180,
    "updated": 0,
    "skipped": 15,
    "failed": 5,
    "importedLeadIds": [
      "665d4e5f6a7b8c9d0e1f2a3b",
      "665d4e5f6a7b8c9d0e1f2a3c"
    ],
    "errors": [
      {
        "email": "not-an-email",
        "error": "Invalid email format"
      }
    ]
  }
}
POST
/v1/leads/bulk
POST
Base URLstring

Target server for requests. Edit to use your own host.

API Key (header: X-Api-Key)
X-Api-Keystring
Required

Platform API key (sk_user_...) or Workspace API key (sk_...)

Platform API key (sk_user_...) or Workspace API key (sk_...)
Content-Typestring
Required

The media type of the request body

Options: application/json
leadsarray
Required

Array of lead objects (max 5,000)

skipDuplicatesboolean

Skip leads whose email already exists (false = update existing)

dataCleanupboolean

Normalize emails, phone numbers, names

tagstring

Tag to apply to all imported leads

Request Preview
Response

Response will appear here after sending the request

Authentication

header
X-Api-Keystring
Required

API Key for authentication. Platform API key (sk_user_...) or Workspace API key (sk_...)

Body

application/json
leadsarray
Required

Array of lead objects (max 5,000)

skipDuplicatesboolean

Skip leads whose email already exists (false = update existing)

dataCleanupboolean

Normalize emails, phone numbers, names

tagstring

Tag to apply to all imported leads

Responses