Leads
Lists the leads in the API key's workspace, newest first, with pagination. Filter by exact email address to look up a single lead, or by campaign to list only the leads in one campaign. This is how a lead created through POST /leads is found again.
Page number (default: 1)
Page size (default: 20, maximum: 200)
Filter by exact email address
Filter by campaign ID
Bearer <API_KEY>
List of leads
true20142Invalid query parameters
Unauthorized - invalid or missing API key
Failed to retrieve leads
GET /r/leads HTTP/1.1
Host: api.emailchaser.com
Authorization: text
Accept: */*
{
"hasMore": true,
"leads": [
{
"company": "Acme Corp",
"createdAt": "2024-01-15T10:30:00Z",
"customVariables": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"email": "john.doe@example.com",
"firstName": "John",
"id": 123,
"lastName": "Doe",
"linkedin": "https://linkedin.com/in/johndoe",
"meetingBookedAt": "2026-07-30T14:05:00Z",
"middleName": "A.",
"phone": "+1234567890",
"tag": "interested",
"title": "Software Engineer",
"updatedAt": "2024-01-15T10:30:00Z",
"website": "https://example.com"
}
],
"limit": 20,
"page": 1,
"total": 42
}Creates or updates multiple leads. If a lead with the same email already exists, it will be updated. Optionally associate leads with a campaign by passing campaignId at the top level of the request body, not inside a lead object. Any attribute outside the named fields can be sent in customVariables and becomes a merge tag usable in email copy. PUT /leads is an alias for this endpoint and behaves identically.
Bearer <API_KEY>
Leads processed successfully
5leads processed successfullyInvalid request body or no leads provided
Unauthorized - invalid or missing API key
Campaign not found
Failed to create leads
POST /r/leads HTTP/1.1
Host: api.emailchaser.com
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 239
{
"campaignId": 1,
"leads": [
{
"company": "text",
"customVariables": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"email": "text",
"firstName": "text",
"lastName": "text",
"linkedin": "text",
"middleName": "text",
"phone": "text",
"title": "text",
"website": "text"
}
]
}{
"count": 5,
"leads": [
{
"email": "john.doe@example.com",
"id": 123
}
],
"message": "leads processed successfully"
}Retrieves detailed information about a specific lead.
Lead ID
Bearer <API_KEY>
Lead details
Invalid lead ID
Unauthorized - invalid or missing API key
Forbidden - lead does not belong to your space
Lead not found
GET /r/leads/{id} HTTP/1.1
Host: api.emailchaser.com
Authorization: text
Accept: */*
{
"lead": {
"company": "Acme Corp",
"createdAt": "2024-01-15T10:30:00Z",
"customVariables": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"email": "john.doe@example.com",
"firstName": "John",
"id": 123,
"lastName": "Doe",
"linkedin": "https://linkedin.com/in/johndoe",
"meetingBookedAt": "2026-07-30T14:05:00Z",
"middleName": "A.",
"phone": "+1234567890",
"tag": "interested",
"title": "Software Engineer",
"updatedAt": "2024-01-15T10:30:00Z",
"website": "https://example.com"
}
}Updates an existing lead's information. Only provided fields will be updated.
Lead ID
Bearer <API_KEY>
Lead updated successfully
lead updated successfullyInvalid lead ID or request body
Unauthorized - invalid or missing API key
Forbidden - lead does not belong to your space
Lead not found
Failed to update lead
PUT /r/leads/{id} HTTP/1.1
Host: api.emailchaser.com
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 212
{
"company": "text",
"customVariables": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"email": "text",
"firstName": "text",
"lastName": "text",
"linkedin": "text",
"middleName": "text",
"phone": "text",
"title": "text",
"website": "text"
}{
"lead": {
"company": "Acme Corp",
"createdAt": "2024-01-15T10:30:00Z",
"customVariables": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"email": "john.doe@example.com",
"firstName": "John",
"id": 123,
"lastName": "Doe",
"linkedin": "https://linkedin.com/in/johndoe",
"meetingBookedAt": "2026-07-30T14:05:00Z",
"middleName": "A.",
"phone": "+1234567890",
"tag": "interested",
"title": "Software Engineer",
"updatedAt": "2024-01-15T10:30:00Z",
"website": "https://example.com"
},
"message": "lead updated successfully"
}Deletes a lead and all associated unsent emails. If the lead is associated with campaigns, it will be removed from those campaigns first.
Lead ID
Bearer <API_KEY>
Lead deleted successfully
123lead deleted successfullyInvalid lead ID
Unauthorized - invalid or missing API key
Forbidden - lead does not belong to your space
Lead not found
Failed to delete lead
DELETE /r/leads/{id} HTTP/1.1
Host: api.emailchaser.com
Authorization: text
Accept: */*
{
"id": 123,
"message": "lead deleted successfully"
}Sets the lead's category (tag), typically to correct an AI misclassification of a reply. Validated against the category enum: interested, not_interested, bounced, out_of_office, delivery_incomplete, meeting_booked. Setting meeting_booked behaves exactly like POST /leads/{id}/meeting: it records meetingBookedAt when unset and keeps an existing one, because a meeting is an explicit mark set by you or your agent, never inferred by the system. A real category change fires the LeadCategoryUpdate webhook; setting the value the lead already has is a no-op. Changing the category away from meeting_booked does NOT clear the booked-meeting mark - use DELETE /leads/{id}/meeting for that.
Lead ID
Bearer <API_KEY>
Category must be one of the lead category values: interested, not_interested, bounced, out_of_office, delivery_incomplete, meeting_booked.
interestedLead category updated
lead category updated successfullyInvalid lead ID, request body, or category
Unauthorized - invalid or missing API key
Lead not found
Failed to update lead category
PUT /r/leads/{id}/category HTTP/1.1
Host: api.emailchaser.com
Authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 25
{
"category": "interested"
}{
"lead": {
"id": 123,
"meetingBookedAt": "2026-07-30T14:05:00Z",
"tag": "meeting_booked"
},
"message": "lead category updated successfully"
}Last updated