---
title: "List campaign leads"
method: GET
path: "/v1/campaigns/{id}/leads"
tags: ["campaigns"]
---

# List campaign leads

`GET /v1/campaigns/{id}/leads`

## Request

- Base URL: `https://api.botdog.co`
- URL: `https://api.botdog.co/v1/campaigns/{id}/leads`
- Auth: API key in header `x-api-key`

List the leads in a campaign, with optional filters.

## Path parameters

- `id` string, required

## Query parameters

- `campaignStatus` 'CREATED' | 'ACTIVE' | 'PAUSED' | 'ERROR' | 'ARCHIVED' | 'COMPLETED'
- `hasReplied` boolean
- `limit` number
- `cursor` string

## Response `200`

- PaginatedCampaignLeadsDto
  - `data` CampaignLeadDto[], required
    - `id` string, required: The unique identifier of the lead
    - `name` string, required: The name of the lead
    - `linkedinProfile` string, required: The LinkedIn profile URL of the lead
    - `company` string, nullable: The lead's company
    - `job` string, nullable: The lead's job title
    - `campaignStatus` 'CREATED' | 'ACTIVE' | 'PAUSED' | 'ERROR' | 'ARCHIVED' | 'COMPLETED', required: The campaign's status when this lead was added to it. It is not updated as the lead moves through its sequence, so it does not show whether the lead's sequence is still running, has finished, failed or was stopped. For that, read the lead's `events` on GET /v1/leads/{id}: `WORKFLOW_CLEANUP` means the sequence finished, `WORKFLOW_FAILED` means it failed, and `stoppedAt` is set when it was stopped through the API.
    - `hasReplied` boolean, required: Whether the lead has replied
    - `createdAt` string, date-time, required: When the lead was added to the campaign
  - `nextCursor` string, nullable, required: Opaque cursor for the next page; null when there are no more results. Pass it back as the `cursor` query parameter.

## Other responses

- `401`: Unauthorized. API key is missing or invalid.
- `403`: The key owner has no seat assigned (write endpoints only), the team is on Botdog Managed and so may only read (write endpoints only), or the subscription/plan does not permit this.
- `404`: Campaign not found
- `429`: Rate limit exceeded. Retry after cooldown.

---

[API](https://skmtc.dev/botdog/apis/botdog-api.md) · [All operations](https://skmtc.dev/botdog/apis/botdog-api/llms.txt) · [OpenAPI document](https://skmtc.dev/botdog/apis/botdog-api/revisions/6c0213d8a608?raw)
