POST/campaigns/:campaignId/leads
Add a LinkedIn profile to an existing campaign. 1 credit when status is created.
If the campaign is still FAILED (for example after a failed run with no leads), a successful insert promotes it to READY_TO_SEND so POST …/start works without creating a new campaign.
POST /campaigns/search_abc/leads
X-API-Key: sk_live_...
Content-Type: application/json
{
"linkedinUrl": "https://www.linkedin.com/in/jane-doe/",
"fullName": "Jane Doe",
"jobTitle": "VP Sales",
"companyName": "Acme"
}
| Field | Required | Max |
|---|---|---|
linkedinUrl | Yes | Personal /in/… URL |
fullName | No | 120 |
firstName | No | 120 |
lastName | No | 120 |
jobTitle | No | 200 |
companyName | No | 200 |
email | No | 254 |
location | No | 200 |
headline | No | 500 |
personalization | No | 2000 |
Unknown fields → 400 validation_error. No live profile fetch on this call.
{
"leadId": "lead_xyz",
"status": "created",
"creditsCharged": 1
}
status | Credits |
|---|---|
created | 1 |
duplicate | 0 |
excluded | 0 |
HTTP is always 200 for these outcomes — branch on status.
| Error code | When |
|---|---|
insufficient_credits | Balance < 1 |
validation_error | Bad URL / fields |
not_found | Unknown campaign |