---
title: "Add a contact to a campaign"
method: POST
path: "/advanced/campaign/contacts"
tags: ["Campaign contacts"]
---

# Add a contact to a campaign

`POST /advanced/campaign/contacts`

## Request

- Base URL: `https://api.emelia.io`
- URL: `https://api.emelia.io/advanced/campaign/contacts`
- Auth: API key in header `Authorization`

Adds ONE contact to a multichannel campaign. The contact is stored in a list named "<campaign name> contacts from API" (created if needed) attached to the campaign. If the campaign is FINISHED it is started again automatically (all start checks apply); if it is RUNNING the contact is scheduled immediately. A contact already present in that list (same email or LinkedIn URL) is rejected. For many contacts, use the Lists endpoints and `PATCH .../recipients` instead.

## Request body

- object
  - `id` string, required: MongoDB ObjectId: 24 hexadecimal characters.
  - `contact` ContactInput, required: Contact to add. At least one of `email` or `linkedinUrlProfile`. Only `email`, `linkedinUrlProfile`, `phone`, `firstName` and `lastName` are stored as native fields; every other key becomes a custom variable usable as `{{key}}` in messages. ALL VALUES MUST BE STRINGS: a number, an object or an array makes the whole request fail with a 400 error. Empty strings are ignored.
    - `email` string, email
    - `linkedinUrlProfile` string: https://www.linkedin.com/in/<handle>. Sales Navigator lead URLs (`/sales/lead/` or `/sales/people/`) are converted when possible; other URLs are rejected.
    - `firstName` string
    - `lastName` string
    - `phone` string

## Response `200`

Success.

- object
  - `success` unknown
  - `contactId` string: MongoDB ObjectId: 24 hexadecimal characters.

## Other responses

- `400`: Invalid request.
- `401`: Missing, malformed, unknown or disabled API key. The key must be exactly 48 characters, otherwise it is treated as a session token and rejected the same way.
- `500`: Unexpected error. IMPORTANT: this is also what you receive today when the per minute quota of your account is exceeded (the quota error is not mapped to 429 for API keys). No `Retry-After` header is sent. Wait until the next minute window before retrying.

---

[API](https://skmtc.dev/emelia/apis/emelia-api.md) · [All operations](https://skmtc.dev/emelia/apis/emelia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/emelia/apis/emelia-api/revisions/8c0cb435f2c4?raw)
