ArgorantDocs

Add people

posthttps://app.argorant.com/api/v1/campaigns/{campaign_id}/leads
POST
/api/v1/campaigns/{campaign_id}/leads

A saved list to enroll.

Your own people, each with an email and any of first_name, last_name, company, title and your own columns.

The results to take, valid alone or valid and catch_all.

Leave out free mail and home internet addresses (business emails only). Default false.

People of a search, up to 50,000: the same ids a saved list takes. 1 credit per new person, like a list.

People already in another campaign of your workspace, up to 50,000 (ids from GET .../leads). Needs from_campaign_id.

The campaign the lead_ids are in.

true adds the addresses exactly as given: no swap to another address of the same person and no address left out as the same person. Default false.

Bring back people of this add who were taken out of the campaign earlier and never emailed. Default: true for rows, record_ids and lead_ids, false for a saved list.

Adds a saved list (list_id), people of a search (record_ids, the same ids a saved list takes), people already in another campaign of your workspace (lead_ids with from_campaign_id, their own fields come along) or your own rows. A row whose address Argorant knows gets its empty name, title and company filled in (filled_from_argorant). People you took out of this campaign earlier come back when you add them again by rows, record_ids or lead_ids, as long as nobody emailed them (restored). Adding a saved list again keeps them out (removed_kept_out) unless you send restore_removed: true. People who were emailed, replied, bounced, unsubscribed or are blocked never come back. The same person under two addresses joins once: when a better address takes the place of the one in the campaign the answer counts it in swapped (swapped_samples), and a second address left out is in alternate_skipped (alternate_skipped_samples). Send keep_given_address: true to add the addresses exactly as given. Every address is checked before it joins. When a source holds anything besides confirmed addresses and you did not say which to take, the answer is needs_choice with the count per result and adds nothing yet: ask the user, then call again with grades: ["valid"] (recommended) or ["valid", "catch_all"]. Invalid addresses never join. People from Argorant's data cost 1 credit each the first time; your own rows, repeats and people you already unlocked are free. Any extra key on a row, such as plan or city, becomes a variable like {{plan}}. Private addresses (free mail, home internet) are added like any other unless you send exclude_private_emails: true (business emails only); the answer then says how many were left out (skipped_private_email).

CostWhat it doesKey scopes
1 credit per new person from Argorant's data; your own rows, repeats and already unlocked people are freeSpends creditsargorant:manage_lists

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

Header Parameters

Idempotency-Key?string

Any unique text up to 128 characters. A retry with the same key and the same body within 24 hours returns the first answer (with the header Idempotent-Replayed: true) instead of doing the work twice. The same key with another body answers 409 idempotency_conflict.

Lengthlength <= 128
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}$

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

Shell
curl -X POST "https://app.argorant.com/api/v1/campaigns/7f3a2c1e-9b4d-4e8a-a1c2-5d6e7f8a9b0c/leads" \  -H "Idempotency-Key: 6f1c2e7a-run-42" \  -H "Content-Type: application/json" \  -d '{    "list_id": 312,    "grades": [      "valid"    ]  }'

JSON
{  "needs_choice": true,  "added": 0,  "question": "Add only the 1,188 valid addresses (recommended)? Or also 28 catch-all, at a higher bounce risk?",  "recommended": [    "valid"  ],  "options": [    {      "grade": "valid",      "label": "Valid",      "count": 1188,      "recommended": true    },    {      "grade": "catch_all",      "label": "Catch-all",      "count": 28,      "recommended": false    }  ]}