Skip to main content
POST
Create person
Required scope: CRM_WRITE

Body fields

At least one of name or last_name is required. A request without numbers, or with an empty list, fails with 400 MISSING_FIELD.

Associations

Pass a company_id to link the person to an existing company. The company must exist or the request returns an error.

Duplicate phone numbers

By default, creating a person with phone numbers that already belong to another person in your team returns a 409 Conflict error. The error response includes the IDs of the existing people so you can update them instead. To create the person anyway, set allow_duplicate_number to true.
To find the existing person by phone number, use Search people with the phone_number filter.

Custom attributes

custom_attributes sets the values of your custom fields. Create the field first, then use its key here.
  • Send null for a key to clear its value.
  • Keys you leave out are not changed. {}, or leaving out custom_attributes, changes nothing.
  • An unknown or archived key returns 400 CUSTOM_ATTRIBUTE_KEY_UNKNOWN. A value of the wrong type returns 400 CUSTOM_ATTRIBUTE_VALUE_INVALID. In both cases param is custom_attributes.<key>.
  • The whole request is validated before anything is written, so a rejected request creates nothing.
  • The response always includes custom_attributes, {} when the person has none. Archived attributes and empty values are left out.
  • Values are also synced to your connected CRMs that create contacts. A value on an attribute that is synced from a CRM can be overwritten by the next CRM sync.

Example

The budget number is read back as a decimal.

Authorizations

Authorization
string
header
required

Body

application/json

Request body for creating a person

numbers
string[]
required

Phone numbers in E.164 format. At least one number is required.

Minimum array length: 1
Example:
name
string | null

First name

Example:

"John"

last_name
string | null

Last name

Example:

"Doe"

job_title
string | null

Job title

Example:

"CEO"

website
string | null

Website URL

Example:

"https://example.com"

address
string | null

Postal address

Example:

"123 Main St"

emails
string[] | null

Email addresses

Example:
company_id
string | null

ID of the company to associate with

Example:

"com-xyz789"

allow_duplicate_number
boolean
default:false

When true, allows creating a person even if the phone numbers are already assigned to another person. Defaults to false.

custom_attributes
object | null

Values for the person's custom attributes, keyed by attribute key. TEXT takes a string, NUMBER a finite JSON number (numeric strings are rejected), BOOLEAN a JSON boolean, DATE a YYYY-MM-DD string or ISO datetime, and DROPDOWN an option key or label (case-insensitive). Send null to clear a value; keys you omit are left untouched, and {} or omitting the field changes nothing. An unknown or archived key, or a value of the wrong type, rejects the whole request with CUSTOM_ATTRIBUTE_KEY_UNKNOWN or CUSTOM_ATTRIBUTE_VALUE_INVALID.

Example:

Response

Person created

data
object

A person in the CRM