---
title: "List the people in a campaign"
method: GET
path: "/api/v1/campaigns/{campaign_id}/leads"
tags: ["Campaigns"]
---

# List the people in a campaign

`GET /api/v1/campaigns/{campaign_id}/leads`

## Request

- Base URL: `https://app.argorant.com`
- URL: `https://app.argorant.com/api/v1/campaigns/{campaign_id}/leads`
- Auth: HTTP bearer

The people in a campaign with where each one is: pending (being checked), queued, active, replied, bounced, completed or suppressed. `status=held` lists the people waiting at an email because a variable it uses has no value for them; each one carries `hold` with the variables, the email and a sentence.

| Cost | What it does | Key scopes |
| --- | --- | --- |
| Free | Reads only | `argorant:read_counts` |

## Path parameters

- `campaign_id` string, uuid, required

## Query parameters

- `status` 'pending' | 'queued' | 'active' | 'replied' | 'bounced' | 'completed' | 'suppressed' | 'held'
- `q` string
- `limit` integer
- `cursor` string
- `offset` integer

## Headers

- `X-Request-Id` string

## Response `200`

OK

- object
  - `total` integer, nullable, required: How many rows exist in total for this query.
  - `limit` integer, required: Rows per page in this answer.
  - `offset` integer, required: Rows skipped before this page.
  - `next_cursor` string, nullable, required: Pass as cursor to get the next page. null on the last page.
  - `has_more` boolean, required: true when another page exists.
  - `total_is_estimate` boolean: Present and true when total is a lower bound, for example when a list reached its upper size.
  - `leads` CampaignLead[], required
    - `id` string, uuid: Lead id.
    - `email` string, email: Email.
    - `first_name` string, nullable: First name.
    - `last_name` string, nullable: Last name.
    - `company` string, nullable: Company.
    - `title` string, nullable: Title.
    - `status` 'pending' | 'queued' | 'active' | 'replied' | 'bounced' | 'completed' | 'suppressed': Where this person is in the campaign.
    - `current_step` integer, nullable: The email they get next.
    - `next_send_at` string, date-time, nullable: When the next email goes out.
    - `email_grade` string, nullable: Result of the email check: valid, catch_all, unknown, risky.

## Other responses

- `401`: 401 Unauthorized. `unauthorized` when the API key is missing, wrong or revoked.
- `403`: 403 Forbidden. `scope_missing` when the key lacks argorant:read_counts.
- `404`: 404 Not found. `not_found` when the item does not exist in your workspace.
- `422`: 422 Validation error. `validation_error` when a field has the wrong type or is missing.
- `429`: 429 Too many requests. `rate_limited` when too many requests this minute.

---

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