ArgorantDocs

List the people in a campaign

gethttps://app.argorant.com/api/v1/campaigns/{campaign_id}/leads
GET
/api/v1/campaigns/{campaign_id}/leads

The people in a campaign with where each one is: pending (being checked), queued, active, replied, bounced, completed or suppressed. Each person has added_at, added_by (who added them, when known), source (the saved list or add they came from), custom_fields (your own columns, personal lines and tags) and sort_key. Page with after set to next_after from the answer before: the order is fixed (newest first, or order=oldest), so nobody is skipped or shown twice while people are added. fields picks what comes back per person. q also searches custom field values; on a very large campaign a search looks through a part at a time and answers more_to_search: true with next_after to search on (total is then null). 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.

CostWhat it doesKey scopes
FreeReads onlyargorant:read_counts

Authorization

BearerAuth
AuthorizationBearer <token>

Your API key from app.argorant.com/profile, sent as Authorization: Bearer <key>. A connector sign-in token (ag_mcp_...) works the same way.

In: header

Path Parameters

campaign_id*string

The campaign id from create or list.

Formatuuid

Query Parameters

status?string

Only this status.

Value in

  • "pending"
  • "queued"
  • "active"
  • "replied"
  • "bounced"
  • "completed"
  • "suppressed"
  • "held"
q?string

Search name, email, company or custom field values.

tag?string

Only people with this tag.

after?string

next_after from the answer before: the next page in the same order.

order?string

newest (default) or oldest first.

Value in

  • "newest"
  • "oldest"
fields?string

Comma-separated fields per person from email, first_name, last_name, company, title, status, email_grade, current_step, next_send_at, last_sent_at, replied_at, bounced_at, added_at, added_by, source, custom_fields, sort_key. The id always comes back.

limit?integer

Rows per page, 1 to 500 (default 50).

Range1 <= value <= 500
Default50
cursor?string

The next_cursor of the previous page. Leave out for the first page.

offset?integer

Rows to skip, as an alternative to cursor.

Range0 <= value
Default0

Header Parameters

X-Request-Id?string

Your own id for this request, 8 to 64 letters, digits, dot, dash or underscore. Returned as X-Request-Id; one is made for you when you send none.

Match^[A-Za-z0-9._-]{8,64}$

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

Shell
curl -X GET "https://app.argorant.com/api/v1/campaigns/7f3a2c1e-9b4d-4e8a-a1c2-5d6e7f8a9b0c/leads?limit=50"
JSON
{  "leads": [    {      "id": "0c9d8e7f-6a5b-4c3d-8e2f-1a0b9c8d7e6f",      "email": "jane.doe@example-acme.com",      "first_name": "Jane",      "last_name": "Doe",      "company": "Acme",      "title": "CFO",      "status": "replied",      "current_step": 2,      "next_send_at": null,      "email_grade": "valid",      "added_at": "2026-10-23T13:03:41+00:00",      "added_by": "ops@example-acme.com",      "source": {        "kind": "list",        "label": "saved list",        "list_id": 312,        "job_id": "4b1d2c3e-5f60-4a7b-8c9d-0e1f2a3b4c5d"      },      "custom_fields": {        "plan": "pro",        "tags": [          "q4"        ]      },      "sort_key": "WyIyMDI2LTEwLTIzVDEzOjAzOjQxKzAwOjAwIiwiamFuZS5kb2VAZXhhbXBsZS1hY21lLmNvbSJd"    }  ],  "total": 1188,  "limit": 50,  "next_after": "WyIyMDI2LTEwLTIzVDEzOjAzOjQxKzAwOjAwIiwiamFuZS5kb2VAZXhhbXBsZS1hY21lLmNvbSJd"}