Search leads
Finds leads already in the workspace. Omit campaignId for the whole CRM; pass campaignId to list or search that campaign's leads. Same query, pagination, and payload either way. By default each row is identity fields, job title, Oracle score, lead-fit score, sequence status, the assigned sender on leadSequence, stage, and timestamps. Pass includeVariables for every custom and built-in variable. This does not find new people and does not enrich them.
/campaigns.leads.searchAuthorization
bearerAuth Enter your MailMoo API key (format: sk_live_...)
In: header
Query Parameters
List or search this campaign's leads. Omit to search the whole workspace (CRM).
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$uuidall for every lead, uncategorized for leads with no tag, or a tag ID from tags.getAll.
"all"Search box text. Matches first name, last name, full name, email, company, phone, or social profile URL.
When true, each lead includes every custom and built-in variable. Default false: identity fields only.
The cursor from a previous page, to fetch the next.
Filter by pipeline stage / status. Accepts a category enum (MEETING_BOOKED), a friendly name (Meeting booked, case-insensitive), or NEW for unstaged leads.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/campaigns.leads.search"{ "leads": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "leadGroupId": "b15edcce-7ff3-427f-9d96-03b6df3f3ff2", "tagId": "f69eb9f1-ae9f-4086-b25c-c39758a43fb3", "leadIdentifier": "string", "firstName": "string", "lastName": "string", "fullName": "string", "email": "string", "company": "string", "jobTitle": "string", "location": "string", "phone": "string", "leadFitScore": 0, "oracleScore": 0, "sequenceStatus": "IN_PROGRESS", "linkedInUrl": "string", "personalLinkedInUrl": "string", "companyLinkedInUrl": "string", "websiteUrl": "string", "createdAt": "string", "lastActivityAt": "string", "meetingBookedAt": "string", "closeReason": "NOT_ICP", "pipelineStageId": "07dd84d5-9ace-4c3a-bee6-6bd4c6704f7f", "pipelineStage": { "name": "string", "colorHex": "string", "category": "NEW" }, "leadSequence": { "status": "IN_PROGRESS", "sdrProfileId": "fd57902a-f94d-44c4-b010-9350234d4c62", "sequenceSenderId": "693e952b-a501-41bf-878d-f5030c0c8a06", "sdrProfile": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "firstName": "string", "lastName": "string" }, "seqSender": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "sdrProfileId": "fd57902a-f94d-44c4-b010-9350234d4c62", "sdrProfile": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "firstName": "string", "lastName": "string" } } }, "campaigns": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" } ], "profilePictureUrl": "string", "builtInValues": { "property1": "string", "property2": "string" }, "variables": [ { "variableTypeId": "dffcb200-76b2-402b-a8ff-b2a9687a12cc", "name": "string", "builtInType": "string", "value": "string" } ], "property1": null, "property2": null } ], "nextCursor": "string"}Block a person or company POST
Block someone already in the workspace. Pass exactly one of personId or companyId. A person is matched by their social profile, or by email when they have none. A company is matched by its website domain, or by its company page. The entry also blocks that same identity if it is imported again. Fails when the record has nothing to match on.
Read a lead GET
Returns one lead with everything held against it: its fields, including enrichment output and AI columns, plus where it sits in the pipeline. Field values are redacted on workspaces without access to lead contact data.

