Add a contact
Authentication
Path parameters
UUID of the campaign that receives the contact. An unknown, deleted or foreign campaign answers 404; a value that is not a UUID answers 400.
Request
E.164 phone number with country code (Must be E.164 format). It is the dedup key in the campaign. Numbers shorter than 7 digits pass here but cannot be dialed and end as invalid.
Email address (Invalid email). Required for email campaigns.
E.164 WhatsApp number. Used as the dedup key when there is no phoneNumber.
Contact’s name; the first word feeds contact.first_name.
Up to 20 keys matching ^[a-zA-Z0-9_-]+\$, string values up to 500 characters. The agent can
read them, and tokens can use them as contact.metadata.<key>. Card-like and 9-digit
ID-like numbers are redacted before storage.
Response
A contact row as returned by POST /api/campaigns/{campaignId}/contacts. Keys are snake_case.
phone_number is always present: contacts saved with only a WhatsApp number use it, and
email-only contacts get a synthetic key em:<16 hex>.

