API referenceLeads in campaigns
POST
/campaigns/{id}/leads

JavaScript SDK: swarmhit.campaigns.leads.add(campaignId, params)

Adds leads from a leads array of { profileUrl, ... } objects (or { email, ... } when the workspace has the email channel, { phone, ... } with the WhatsApp 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. Adding makes no LinkedIn call; at first contact, LinkedIn's firstName, lastName, headline and picture replace the values you sent (other fields are kept). Leads already in the campaign are skipped, and so are items with neither a valid profileUrl nor (with the email channel) a valid email nor (with the WhatsApp channel) a phone with its country code. Leads on the workspace blocklist are not enrolled, nor left on the campaign's own list, and count as blocklisted; leads an exclusion rule keeps out are not enrolled and count as excluded. Max 1000 leads per request.

A leads array returns { inserted, excluded, blocklisted, listId } (skipped items are not counted); a listId import returns { inserted, skipped, excluded, blocklisted, listId, listName }, where skipped counts the list's leads already in the campaign.

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
AuthorizationBearer <token>

An API key created on the Access tokens page.

In: header

Path Parameters

id*string

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,    "excluded": 0,    "blocklisted": 0,    "skipped": 0,    "listId": "string",    "listName": "string"  }}