JavaScript SDK: swarmhit.leads.update(leadId, params)
Edit a lead's fields and/or replace its manual tags.
Authorization
bearerAuth An API key created on the Access tokens page.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Any subset of these fields.
Response Body
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/leads/string" \ -H "Content-Type: application/json" \ -d '{ "jobTitle": "VP Engineering", "tags": [ "warm", "q3" ] }'{ "data": { "id": "string", "firstName": "string", "lastName": "string", "headline": "string", "jobTitle": "string", "company": "string", "email": "string", "phone": "string", "emailStatus": "bounced", "emailOptOut": true, "location": "string", "picture": "string", "notes": "string", "profileUrl": "string", "publicIdentifier": "string", "openProfile": true, "tags": [ "string" ], "autoTags": [ "string" ], "listIds": [ "string" ], "campaignIds": [ "string" ], "customVariables": { "property1": "string", "property2": "string" }, "source": "string", "lastActivityAt": "2019-08-24T14:15:22Z", "enrichedAt": "2019-08-24T14:15:22Z", "enrichment": { "email": { "status": "pending", "at": "2019-08-24T14:15:22Z", "reason": "no_credits" }, "phone": { "status": "pending", "at": "2019-08-24T14:15:22Z", "reason": "no_credits" } }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }}List leads GET
**JavaScript SDK:** [`swarmhit.leads.list(params?)`](/smart-api/sdk/methods#leads)
Add leads to a campaign POST
**JavaScript SDK:** [`swarmhit.campaigns.leads.add(campaignId, params)`](/smart-api/sdk/methods#campaigns.leads) 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 "<campaign name>'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.