Weezly Outreach
|Developer Docs

Leads API

Manage lead lists and individual leads. Import leads, search, export, and organize them into lists.

List Lead Lists

GET/api/leads/lists

Retrieve all lead lists for the authenticated user.

Query Parameters

ParameterTypeDescription
searchstringFilter lists by name (case-insensitive)
Request — cURLcURL
curl --location --request GET 'http://outreach.weezly.com/api/leads/lists' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY'
Response — 200 OKJSON
{
  "lists": [
    {
      "id": "cm3list789abc",
      "name": "SaaS Founders — West Coast",
      "description": "Founders of B2B SaaS companies in CA, WA, OR",
      "userId": "user_123",
      "leadCount": 245,
      "createdAt": "2026-06-01T08:00:00.000Z",
      "updatedAt": "2026-06-05T14:30:00.000Z",
      "campaigns": [
        {
          "id": "cm3camp456",
          "name": "Q1 SaaS Outreach",
          "status": "ACTIVE"
        }
      ]
    }
  ]
}

Response Codes

200Lists returned successfully
401Unauthorized

Create Lead List

POST/api/leads/lists

Create a new lead list.

Request Body

ParameterTypeDescription
namerequiredstringName of the lead list
descriptionstringOptional description
Request — cURLcURL
curl --location --request POST 'http://outreach.weezly.com/api/leads/lists' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Enterprise CTOs",
  "description": "CTOs at companies with 500+ employees"
}'
Response — 201 CreatedJSON
{
  "list": {
    "id": "cm3list_new123",
    "name": "Enterprise CTOs",
    "description": "CTOs at companies with 500+ employees",
    "userId": "user_123",
    "leadCount": 0,
    "createdAt": "2026-06-07T10:00:00.000Z",
    "updatedAt": "2026-06-07T10:00:00.000Z"
  }
}

Response Codes

201List created successfully
400Name is required
401Unauthorized

Get Lead List

GET/api/leads/lists/:id

Get a lead list with paginated leads.

Query Parameters

ParameterTypeDescription
searchstringSearch leads by name, company, or title
pagenumberPage number (default: 1)
limitnumberLeads per page (default: 25)
sortBystringSort field: addedAt, fullName, company (default: addedAt)
sortOrderstringasc or desc (default: desc)
Request — cURLcURL
curl --location --request GET 'http://outreach.weezly.com/api/leads/lists/:id' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY'
Response — 200 OKJSON
{
  "list": {
    "id": "cm3list789abc",
    "name": "SaaS Founders — West Coast",
    "description": "Founders of B2B SaaS companies",
    "leadCount": 245
  },
  "leads": [
    {
      "id": "cm3lead_001",
      "firstName": "Sarah",
      "lastName": "Chen",
      "fullName": "Sarah Chen",
      "headline": "CEO at TechStartup Inc.",
      "jobTitle": "CEO",
      "company": "TechStartup Inc.",
      "email": "sarah@techstartup.com",
      "phone": null,
      "location": "San Francisco, CA",
      "linkedinUrl": "https://linkedin.com/in/sarahchen",
      "photoUrl": "https://media.licdn.com/...",
      "connectionStatus": "UNKNOWN",
      "source": "SEARCH",
      "createdAt": "2026-06-01T08:00:00.000Z"
    }
  ],
  "total": 245,
  "page": 1,
  "totalPages": 10
}

Response Codes

200List and leads returned
404List not found
401Unauthorized

Update Lead List

PATCH/api/leads/lists/:id

Update a lead list's name or description.

Request Body

ParameterTypeDescription
namestringNew name for the list
descriptionstringNew description
Request — cURLcURL
curl --location --request PATCH 'http://outreach.weezly.com/api/leads/lists/:id' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "SaaS Founders — Updated",
  "description": "Updated description for the list"
}'

Response Codes

200List updated
400Name cannot be empty
404List not found
401Unauthorized

Delete Lead List

DELETE/api/leads/lists/:id

Delete a lead list and all its entries. Leads themselves are not deleted.

Request — cURLcURL
curl --location --request DELETE 'http://outreach.weezly.com/api/leads/lists/:id' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY'
Response — 200 OKJSON
{
  "ok": true
}

Response Codes

200List deleted
404List not found
401Unauthorized

Add Lead to List

POST/api/leads/lists/:id/leads

Add a lead to the list. If a lead with the same LinkedIn URL already exists for this user, it will be linked to the list instead of duplicated.

Request Body

ParameterTypeDescription
firstNamestringFirst name
lastNamestringLast name
fullNamestringFull name
headlinestringLinkedIn headline
jobTitlestringJob title
companystringCompany name
emailstringEmail address
phonestringPhone number
locationstringLocation
linkedinUrlstringLinkedIn profile URL
Request — cURLcURL
curl --location --request POST 'http://outreach.weezly.com/api/leads/lists/:id/leads' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "firstName": "Marcus",
  "lastName": "Johnson",
  "fullName": "Marcus Johnson",
  "headline": "VP Engineering at ScaleUp",
  "company": "ScaleUp Solutions",
  "email": "marcus@scaleup.io",
  "linkedinUrl": "https://linkedin.com/in/marcusjohnson"
}'
Response — 201 CreatedJSON
{
  "lead": {
    "id": "cm3lead_new456",
    "firstName": "Marcus",
    "lastName": "Johnson",
    "fullName": "Marcus Johnson",
    "headline": "VP Engineering at ScaleUp",
    "company": "ScaleUp Solutions",
    "email": "marcus@scaleup.io",
    "linkedinUrl": "https://linkedin.com/in/marcusjohnson",
    "source": "MANUAL",
    "createdAt": "2026-06-07T10:00:00.000Z"
  },
  "alreadyInList": false
}

Response Codes

201Lead added to list
404List not found
401Unauthorized

Remove Lead from List

DELETE/api/leads/lists/:id/leads/:leadId

Remove a lead from the list. The lead record itself is not deleted.

Request — cURLcURL
curl --location --request DELETE 'http://outreach.weezly.com/api/leads/lists/:id/leads/:leadId' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY'
Response — 200 OKJSON
{ "ok": true }

Response Codes

200Lead removed from list
404Lead or list not found
401Unauthorized

Bulk Delete Leads

POST/api/leads/lists/:id/leads/bulk-delete

Remove multiple leads from the list at once.

Request Body

ParameterTypeDescription
leadIdsrequiredstring[]Array of lead IDs to remove
Request — cURLcURL
curl --location --request POST 'http://outreach.weezly.com/api/leads/lists/:id/leads/bulk-delete' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "leadIds": [
    "cm3lead_001",
    "cm3lead_002",
    "cm3lead_003"
  ]
}'
Response — 200 OKJSON
{ "deleted": 3 }

Export Leads

GET/api/leads/lists/:id/export

Export all leads from a list as JSON. Returns the full lead data with enrichment information.

Request — cURLcURL
curl --location --request GET 'http://outreach.weezly.com/api/leads/lists/:id/export' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY'
Response — 200 OKJSON
{
  "list": { "id": "cm3list789abc", "name": "SaaS Founders" },
  "leads": [
    {
      "firstName": "Sarah",
      "lastName": "Chen",
      "fullName": "Sarah Chen",
      "headline": "CEO at TechStartup Inc.",
      "company": "TechStartup Inc.",
      "email": "sarah@techstartup.com",
      "linkedinUrl": "https://linkedin.com/in/sarahchen",
      "location": "San Francisco, CA"
    }
  ],
  "total": 245
}

Update Lead

PATCH/api/leads/:leadId

Update a lead's fields.

Request Body

ParameterTypeDescription
firstNamestringFirst name
lastNamestringLast name
emailstringEmail address
phonestringPhone number
companystringCompany name
jobTitlestringJob title
locationstringLocation
Request — cURLcURL
curl --location --request PATCH 'http://outreach.weezly.com/api/leads/:leadId' \
  --header 'X-API-KEY: sk_live_YOUR_API_KEY'
Response — 200 OKJSON
{
  "lead": {
    "id": "cm3lead_001",
    "firstName": "Sarah",
    "lastName": "Chen-Williams",
    "email": "sarah@newemail.com",
    "updatedAt": "2026-06-07T10:05:00.000Z"
  }
}