Skip to main content
POST
/
v1
/
campaigns
/
:id
/
leads
Add Leads to Campaign
curl --request POST \
  --url https://api.example.com/v1/campaigns/:id/leads

Documentation Index

Fetch the complete documentation index at: https://docs.reachedapp.com/llms.txt

Use this file to discover all available pages before exploring further.

Add Leads to a Campaign

Adds one or more leads to a campaign for calling. If a lead with the same phone or email already exists, it will be linked to the campaign. Otherwise, a new lead is created automatically. This is the primary endpoint for Clay, Zapier, and other automation tool integrations.

Request

POST /v1/campaigns/:id/leads

Path Parameters

ParameterTypeRequiredDescription
iduuidYesThe campaign ID to add leads to

Body Parameters

ParameterTypeRequiredDescription
leadsarrayYesArray of lead objects to add
leads[].phonestringConditionalPhone in E.164 format (required if no email or lead_id)
leads[].emailstringConditionalEmail address (required if no phone or lead_id)
leads[].lead_iduuidConditionalExisting lead ID (use if lead already exists)
leads[].first_namestringNoFirst name
leads[].last_namestringNoLast name
leads[].company_namestringNoCompany name
leads[].titlestringNoJob title
leads[].linkedin_urlstringNoLinkedIn profile URL
Each lead in the array must include at least one of: phone, email, or lead_id. The API automatically deduplicates leads based on phone number or email within your workspace.

Example

curl -X POST \
  "https://YOUR_PROJECT.supabase.co/functions/v1/api-gateway/v1/campaigns/c1d2e3f4-.../leads" \
  -H "Authorization: Bearer rchd_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "leads": [
      {
        "first_name": "Marie",
        "last_name": "Dupont",
        "phone": "+33698765432",
        "company_name": "TechCo",
        "title": "Head of Sales"
      },
      {
        "first_name": "Pierre",
        "last_name": "Martin",
        "phone": "+33612345678",
        "email": "pierre@startup.io"
      }
    ]
  }'

Response

{
  "data": {
    "campaign_id": "c1d2e3f4-...",
    "results": [
      {
        "lead_id": "new-lead-uuid-1",
        "status": "added"
      },
      {
        "lead_id": "existing-lead-uuid",
        "status": "already_in_campaign"
      }
    ]
  }
}

Result Statuses

StatusDescription
addedLead was successfully added to the campaign
already_in_campaignLead was already in the campaign (no duplicate created)
If a lead object is missing all three identifiers (phone, email, lead_id), it will be skipped and an error will be returned in the results array for that entry.