On this page

GET/campaigns/:campaignId/leads

List leads in a campaign. 0 credits. Rate class: global.

Request

GET /campaigns/search-xyz/leads?excluded=true&limit=5
X-API-Key: sk_live_...
QueryRequiredNotes
limitNo1–100, default 50
cursorNoOpaque lead id from prior nextCursor
tagNoClassifier allowlist (see below)
repliedNotrue | false
needsReplyNotrue only (false → 400)
excludedNotrue only (false → 400)
sortNoAlways desc; default createdAt

At most one of tag / replied / needsReply / excluded.

Sort

ValueRequires
createdAtany / none (including needsReply=true, excluded=true)
taggedAttag=…
repliedAtreplied=true|false
lastInboundMessageAtnone or repliednot with tag

With needsReply=true or excluded=true, only sort=createdAt (or omit sort) is allowed — other sorts → 400 validation_error.

Reuse a cursor only with the same filter and sort. Leads missing the sort timestamp field are omitted.

BASE=https://api.notiq.io/public/v1
KEY=sk_live_…
curl -sS "$BASE/campaigns/search-xyz/leads?excluded=true&limit=5" \
  -H "X-API-Key: $KEY"
curl -sS "$BASE/campaigns/search-xyz/leads?tag=Interested&sort=taggedAt&limit=5" \
  -H "X-API-Key: $KEY"
curl -sS "$BASE/campaigns/search-xyz/leads?replied=true&sort=lastInboundMessageAt&limit=5" \
  -H "X-API-Key: $KEY"

Filter tag allowlist

Interested, Information request, Not interested, Wrong person, Meeting request, Meeting booked, Resolved, To be defined

Writable tags on PATCH are a smaller set (Interested, Not interested, Wrong person, Meeting booked, Resolved) — see PATCH …/leads/:id.

Response

{
  "leads": [
    {
      "id": "lead_abc",
      "fullName": "Jane Doe",
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "jane@acme.com",
      "companyName": "Acme Dental",
      "website": "https://acme.com",
      "jobTitle": null,
      "location": "Austin, TX",
      "tag": null,
      "replied": false,
      "needsReply": false,
      "excluded": true,
      "stage": "excluded",
      "repliedAt": null,
      "lastInboundMessageAt": null,
      "taggedAt": null
    }
  ],
  "nextCursor": null
}
FieldType
idstring
fullNamestring | null
firstNamestring | null
lastNamestring | null
emailstring | null
companyNamestring | null
websitestring | null
jobTitlestring | null
locationstring | null
tagstring | null
repliedboolean
needsReplyboolean
excludedboolean
stagenew | messaged | replied | tagged | excluded | failed | handed_off
repliedAtstring | null (ISO)
lastInboundMessageAtstring | null (ISO) — prefer for “last reply”
taggedAtstring | null (ISO)

No LinkedIn URL field.

Errors

Error codeWhen
validation_errorBad filter combo, excluded=false / needsReply=false, invalid sort, bad cursor
not_foundUnknown campaign

MCP

Tool: list_leads (excluded: true optional; at most one filter).