Adds leads from a leads array of { profileUrl, ... } objects (or
{ email, ... } when the workspace has the email channel, see
LeadInput), or imports a whole lead list with listId. The workspace lead is upserted
from the fields you pass and enrolled in one call — you don't need to
create leads separately first. Caller-supplied fields win over the
best-effort LinkedIn lookup. Leads already in the campaign are skipped.
Max 1000 leads per request.
Every enrolled lead is also saved to the campaign's own list, created
on the first enrollment and named "'s leads" (exposed
as listId on the campaign). That list and the campaign stay in step:
adding leads to it enrolls them, removing leads from it removes them
from the campaign. Leads imported with listId keep their source list
too. The response's listId is the campaign's own list for a leads
array, or the source list for a listId import.
Authorization
bearerAuth An API key created under Settings → API & Webhooks.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/campaigns/string/leads" \ -H "Content-Type: application/json" \ -d '{ "leads": [ { "profileUrl": "https://www.linkedin.com/in/jane-doe", "firstName": "Jane", "lastName": "Doe" }, { "profileUrl": "https://www.linkedin.com/in/john-roe", "company": "Acme", "customVariables": { "plan": "enterprise" } } ] }'{ "data": { "inserted": 0, "skipped": 0, "listId": "string" }}