Skip to main content
POST
/
v1
/
campaigns
/
{id}
/
contacts
Add Contacts to Campaign
curl --request POST \
  --url https://api.example.com/v1/campaigns/{id}/contacts \
  --header 'Content-Type: application/json' \
  --data '
{
  "contact_ids": [
    {}
  ],
  "source": "<string>"
}
'
{
  "data": {
    "added": 123,
    "skipped": 123,
    "contact_ids": [
      {}
    ]
  }
}

Request

Path Parameters

id
string
required
The campaign’s unique ID (UUID)

Headers

Authorization: Bearer wbk_your_api_key_here
Content-Type: application/json
Requires an API key with the campaigns:write permission. Fires the campaign.contacts_added webhook event.

Body Parameters

contact_ids
array
required
Array of contact UUIDs to enroll. Maximum 500 per request. Duplicates are silently skipped.
source
string
Optional free-form tag describing where these contacts came from (e.g., list:cold-outreach-q2, import:csv-2026-04). Stored on each enrollment for analytics.

Response

data
object
curl -X POST https://data.leadlex.com/functions/v1/api-gateway/v1/campaigns/cmp_abc123/contacts \
  -H "Authorization: Bearer wbk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "contact_ids": [
      "123e4567-e89b-12d3-a456-426614174000",
      "223e4567-e89b-12d3-a456-426614174001"
    ],
    "source": "list:cold-outreach-q2"
  }'

Example Response

{
  "data": {
    "added": 2,
    "skipped": 0,
    "contact_ids": [
      "123e4567-e89b-12d3-a456-426614174000",
      "223e4567-e89b-12d3-a456-426614174001"
    ]
  }
}

Errors

StatusCodeDescription
400too_many_contactsMore than 500 contacts in a single request
400missing_required_fieldcontact_ids missing or empty
401invalid_keyInvalid or expired API key
403insufficient_permissionsMissing campaigns:write permission
404campaign_not_foundNo campaign with this ID
429rate_limitedRate limit exceeded