Skip to content

Contacts

Contacts are the recipients of your campaigns.

List Contacts

GET /contacts

Query parameters:

ParameterTypeDescription
pageintegerPage number
per_pageintegerItems per page (max 100)
searchstringSearch by email, name, company
statusstringFilter by status: active, unsubscribed, bounced
list_idintegerFilter by list
tag_idintegerFilter by tag

Example:

bash
curl "https://app.beeving.com/api/v1/contacts?status=active&per_page=50" \
  -H "Authorization: Bearer TOKEN"

Create a Contact

POST /contacts

Request body:

json
{
  "email": "[email protected]",
  "first_name": "Alice",
  "last_name": "Martin",
  "company": "Acme Corp",
  "phone": "+33612345678",
  "custom_fields": {
    "plan": "pro",
    "trial_end": "2026-03-15"
  },
  "tags": [1, 2],
  "lists": [3]
}

Response 201:

json
{
  "id": 42,
  "email": "[email protected]",
  "first_name": "Alice",
  "last_name": "Martin",
  "full_name": "Alice Martin",
  "company": "Acme Corp",
  "status": "active",
  "custom_fields": { "plan": "pro" },
  "subscribed_at": "2026-02-23T10:00:00.000Z",
  "created_at": "2026-02-23T10:00:00.000Z",
  "updated_at": "2026-02-23T10:00:00.000Z",
  "tags": [...],
  "lists": [...]
}

Import from CSV

POST /contacts/import

Form data:

FieldTypeDescription
filefileCSV file (max 10 MB)
mapping[email]stringEmail column name
mapping[first_name]stringFirst name column
mapping[last_name]stringLast name column
skip_duplicatesbooleanSkip duplicates (default: true)
bash
curl -X POST https://app.beeving.com/api/v1/contacts/import \
  -H "Authorization: Bearer TOKEN" \
  -F "[email protected]" \
  -F "mapping[email]=Email" \
  -F "mapping[first_name]=FirstName" \
  -F "skip_duplicates=true"

Unsubscribe a Contact

POST /contacts/{id}/unsubscribe

Sets the contact status to unsubscribed and records the unsubscription date.

API v1.0