- You have a person’s details (at least an email address)
-
You call
POST /contactswith those details - Amplemarket creates the contact, optionally associating it to an account and an owner
-
You receive the created contact in the
201response and can use it in downstream flows, for example running it through Workflows
Create Contact Endpoint
This endpoint creates a single contact per request. For specific API details, please refer to the API specification.Request format
The request body is a single JSON object describing the contact.email, and it must be unique within your account: if a contact with the same email already exists, the request returns a 409 Conflict instead of creating a duplicate. All other fields are optional, and every field except phone_numbers must be a String.
Associating the contact to an account
You can associate the new contact to an existing account using one of four fields. They are evaluated in the following priority order, and only the first one present is used — the others are ignored:account_id— matched against the account’s public IDcrm_account_id— matched against the linked CRM account identifiercompany_domain— matched against the account’s domaincompany_name— matched against the account’s name
Assigning an owner
Useowner_email to assign the contact to a specific user. The email must match an active user in your Amplemarket account; otherwise the request fails with a 400. If you omit owner_email, the contact is created without an owner.
The
owner_email you provide must match an active user in your Amplemarket account — it is not an arbitrary email address.Phone numbers
phone_numbers is an array of objects. Each object supports:
CRM behavior
If your account has an active CRM integration set up to push contacts, this endpoint always attempts to create a new contact in your CRM. It never links to, or imports, an existing CRM record.Request example
Response format
There are a few potential outcomes:-
The contact is created. The response will have status
201 Createdand the body is the created contact: -
The request is malformed — for example,
emailis missing, or a field has the wrong type. The response will have status400, following the standard error format. -
A contact with the same email already exists. The response will have status
409with theconflicterror code. -
The request was well-formed but could not be completed — most commonly a CRM push failure. The response will have status
422.
Common errors and pitfalls
- Missing or non-string fields: every field except
phone_numbersmust be aString. Sendingnull, a number, or an object for a text field returns a400with a pointer to the offending field. - Account association that matches nothing (or too much):
account_id,crm_account_id,company_domain, andcompany_namemust each resolve to exactly one account. If you are getting400s here, confirm the value and remember that only the highest-priority field you send is used. - Unknown owner:
owner_emailmust be an active user in your account. - Invalid phone numbers: every
phone_numbersentry must include anumberin a valid, parseable format. A missing or unrecognizable number returns a400and the contact is not created. - Duplicate emails: creating the same email twice returns
409, not a second contact. - CRM push failure: if your account pushes contacts to a CRM, a CRM-side failure blocks creation with a
422. In that configuration this endpoint behaves like a create-or-nothing operation, not a best-effort create.