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"
}
FieldRequiredMax
linkedinUrlYesPersonal /in/… URL
fullNameNo120
firstNameNo120
lastNameNo120
jobTitleNo200
companyNameNo200
emailNo254
locationNo200
headlineNo500
personalizationNo2000

Unknown fields → 400 validation_error. No live profile fetch on this call.

{
  "leadId": "lead_xyz",
  "status": "created",
  "creditsCharged": 1
}
statusCredits
created1
duplicate0
excluded0

HTTP is always 200 for these outcomes — branch on status.

Error codeWhen
insufficient_creditsBalance < 1
validation_errorBad URL / fields
not_foundUnknown campaign