On this page

GET/campaigns/:campaignId/leads

Credits: 0
LinkedIn risk: None
Rate limit: Global only


Purpose

Paginated list of leads in a campaign. Allowlisted CRM fields only.


Request

GET /campaigns/search_abc/leads?tag=Interested&sort=taggedAt&limit=50
X-API-Key: sk_live_...
QueryNotes
tagOptional exact tag filter (see PATCH …/leads/:leadId)
repliedOptional boolean
needsReplyOptional — leads waiting on a reply
sortOptional; always desc. Default createdAt. See matrix below
limitOptional; default 50, max 100
cursorFrom previous nextCursor. Invalid, missing sort field, or filter mismatch → 400

Filter rule: use at most one of tag, replied, needsReply per request.

sort matrix

sortAllowed with
createdAt (default)any / none
taggedAtrequires tag=…
repliedAtrequires replied=true or replied=false
lastInboundMessageAtnone, or replied=… (not with tag)

needsReply only supports sort=createdAt. Invalid combo → 400.

Leads missing the chosen sort timestamp are omitted from that sort (they are not sorted last). Prefer GET /activity?type=reply_received for “last reply.”

Changing sort or filters mid-pagination requires a fresh cursor.


Response 200

{
  "leads": [
    {
      "id": "lead_xyz",
      "fullName": "Jane Doe",
      "firstName": "Jane",
      "lastName": "Doe",
      "linkedinUrl": "https://www.linkedin.com/in/jane-doe/",
      "jobTitle": "VP Sales",
      "location": "London, UK",
      "companyName": "Acme",
      "companyLinkedin": "https://www.linkedin.com/company/acme/",
      "website": "https://acme.com",
      "email": "jane@acme.com",
      "tag": "Interested",
      "replied": true,
      "needsReply": true,
      "stage": "tagged",
      "repliedAt": "2026-03-01T12:00:00.000Z",
      "lastInboundMessageAt": "2026-03-02T15:30:00.000Z",
      "taggedAt": "2026-03-02T15:31:00.000Z"
    }
  ],
  "nextCursor": null
}

Timestamps (ISO or null)

FieldNotes
repliedAtWhen the lead was marked replied (can move on later writes)
lastInboundMessageAtBest lead-level signal for recent inbound content
taggedAtWhen the current tag was set

stage

new · connection_sent · connected · messaged · replied · tagged · excluded · failed · handed_off

Allowlisted fields only — never drafts, message logs, or provider ids. See get lead for the richer single-lead shape.


Errors

error.codeWhen
unauthorizedMissing/invalid API key
not_foundUnknown campaign
validation_errorBad filter combo, sort, or cursor
rate_limitedGlobal RPM exceeded

MCP

Tool: list_leads (same filter + sort rules).

See also