Skip to main content
POST
Add leads to campaign
Requires leads:write, plus inbox:send when importing into a running campaign. The REST limit is 1–1,000 leads per request. MCP add_leads has separate 500-lead draft and 50-lead approval limits; those are not the REST limit. Only linkedinUrl is required on each lead. Existing campaign duplicates are skipped; inspect leadsAdded, duplicatesSkipped, invalidEntries and any per-entry errors in the response.

Dynamic/custom fields

REST accepts custom fields as flat properties beside linkedinUrl, such as industry or icebreaker. MCP instead uses the nested custom_fields argument. Keep the interfaces distinct.
This REST request imports immediately when accepted. Campaign state determines subsequent outreach; use the dashboard to review the sequence. Send an Idempotency-Key when retrying an import.

Authorizations

X-API-Key
string
header
required

API key for authentication (prefix: sp_live_ or sp_test_)

Body

application/json
campaignId
string
required

Campaign ID to add leads to

Example:

"cmobr5lei0000u1h02ezf5itt"

leads
object[]
required

Array of leads (1 to 1000 per request) - only linkedinUrl required, all other fields are dynamic

Required array length: 1 - 1000 elements
Example:

Response

Leads added successfully

success
boolean
required

Success status

Example:

true

leadsAdded
number
required

Number of leads added

Example:

10

duplicatesSkipped
number
required

Number of duplicates skipped

Example:

2

invalidEntries
number
required

Number of invalid entries

Example:

0

errors
object[]

Details of any errors