Skip to content

Add Contact to Campaign

Add a new contact to an existing campaign. If the contact doesn't exist, it will be created automatically.

POST /external/v1/campaigns/:id/contacts

Authentication

Requires API key with campaigns:write permission.

Path Parameters

ParameterTypeDescription
iduuidCampaign ID

Request Body

FieldTypeRequiredDescription
namestringYesContact full name
linkedin_profile_urlstringYesLinkedIn profile URL
titlestringNoJob title
companystringNoCompany name
locationstringNoLocation
emailstringNoEmail address
phonestringNoPhone number
aboutstringNoProfile summary/bio
profile_picturestringNoProfile picture URL
extracted_contactsobjectNoExtracted contact information

extracted_contacts Object

FieldTypeDescription
emailsstring[]Email addresses found
phonesstring[]Phone numbers found
websitesstring[]Website URLs found

Response

json
{
  "success": true,
  "data": {
    "campaign_contact": {
      "id": "550e8400-e29b-41d4-a716-446655440001",
      "campaign_id": "550e8400-e29b-41d4-a716-446655440000",
      "contact_id": "550e8400-e29b-41d4-a716-446655440002",
      "status": "approved",
      "created_at": "2026-03-20T14:22:00Z"
    },
    "contact": {
      "id": "550e8400-e29b-41d4-a716-446655440002",
      "name": "John Doe",
      "profile_url": "https://linkedin.com/in/johndoe"
    },
    "campaign": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Tech Founders SF Q1"
    }
  },
  "message": "Contact added to campaign successfully"
}

Example

cURL

bash
curl --request POST \
  --url "https://app.getraze.com/external/v1/campaigns/550e8400-e29b-41d4-a716-446655440000/contacts" \
  --header "X-API-Key: YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "name": "John Doe",
    "linkedin_profile_url": "https://linkedin.com/in/johndoe",
    "title": "CTO",
    "company": "Acme Inc",
    "location": "San Francisco, CA"
  }'

JavaScript

javascript
const response = await fetch(
  'https://app.getraze.com/external/v1/campaigns/CAMPAIGN_ID/contacts',
  {
    method: 'POST',
    headers: {
      'X-API-Key': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      name: 'John Doe',
      linkedin_profile_url: 'https://linkedin.com/in/johndoe',
      title: 'CTO',
      company: 'Acme Inc'
    })
  }
);
const data = await response.json();

Python

python
import requests

response = requests.post(
    f'https://app.getraze.com/external/v1/campaigns/{campaign_id}/contacts',
    headers={'X-API-Key': 'YOUR_API_KEY'},
    json={
        'name': 'John Doe',
        'linkedin_profile_url': 'https://linkedin.com/in/johndoe',
        'title': 'CTO',
        'company': 'Acme Inc'
    }
)
data = response.json()

Errors

StatusCodeDescription
400VALIDATION_ERRORMissing required fields
401MISSING_API_KEYNo API key provided
403INSUFFICIENT_PERMISSIONSMissing campaigns:write permission
404NOT_FOUNDCampaign not found
409DUPLICATE_ERRORContact already exists in this campaign

GetRaze - AI-Powered Lead Generation