GET/campaigns/:campaignId/leads/:leadId
Credits: 0
LinkedIn risk: None
Rate limit: Global only
Purpose
Return one stored campaign lead (profile + pipeline state). This is not a live LinkedIn refresh — use POST /linkedin/profiles/lookup for that.
Request
GET /campaigns/search_abc/leads/lead_xyz
X-API-Key: sk_live_...
Response 200
{
"id": "lead_xyz",
"fullName": "Jane Doe",
"firstName": "Jane",
"lastName": "Doe",
"linkedinUrl": "https://www.linkedin.com/in/jane-doe/",
"headline": "...",
"jobTitle": "VP Sales",
"location": "London, United Kingdom",
"companyName": "Acme",
"companyLinkedin": "https://www.linkedin.com/company/acme/",
"website": "https://acme.com",
"email": "jane@acme.com",
"workExperience": [
{
"company": "Acme",
"position": "VP Sales",
"location": "London, UK",
"description": "Ran the EMEA team.",
"start": "2021-01",
"end": null
}
],
"tag": "Interested",
"replied": true,
"needsReply": false,
"stage": "tagged",
"repliedAt": "2026-03-01T12:00:00.000Z",
"lastInboundMessageAt": "2026-03-02T15:30:00.000Z",
"taggedAt": "2026-03-02T15:31:00.000Z",
"connectionRequestAccepted": true,
"messageSent": true
}
Includes everything on list leads (including repliedAt, lastInboundMessageAt, taggedAt) plus headline, workExperience (max 10), connectionRequestAccepted, and messageSent.
For last inbound reply time prefer lastInboundMessageAt or GET /activity?type=reply_received — message logs are never returned.
Never returned
Provider / member ids, drafts, inbound message logs, chat ids, or account internals.
Errors
error.code | When |
|---|---|
unauthorized | Missing/invalid API key |
not_found | Unknown campaign or lead |
rate_limited | Global RPM exceeded |
MCP
Tool: get_lead.
See also
- List leads (
sort, filters, timestamps) - GET /activity (
type=reply_received) - PATCH …/leads/:leadId