Skip to main content
PUT
Update contact

Authorizations

Authorization
string
header
required

JWT authentication token

Headers

x-company-id
string

Target company identifier. Required only for global API keys (type=global). Ignored for company API keys and human users.

Path Parameters

id
string
required

Contact ID

Body

application/json
name
string

The contact's full name. Optional on update.

country_code
string

Country calling code (1-3 digits). Examples: 55 (Brazil), 1 (USA), 351 (Portugal).

email
string

The contact's email address. An email that already belongs to another contact in the company returns 409.

linkedin_identifier
string

The contact's LinkedIn profile identifier (URL or profile name). A LinkedIn that already belongs to another contact in the company returns 409.

phone_number
string

Phone number without formatting, digits only (area code + number, without the country code). Example: 11999998888. The number is normalized; if invalid, returns 400. A phone that already belongs to another contact in the company returns 409.

job_title
string

The contact's job title. Example: Sales Manager.

seniority
string

The contact's seniority level. Example: Senior, Junior, Mid-level.

department
string

The contact's department. Example: Sales, IT, Marketing.

country
string

The contact's country. Example: Brazil.

region
string

The contact's state or region. Example: São Paulo.

city
string

The contact's city. Example: São Paulo.

experience
string

The contact's professional experience.

skills
string

The contact's skills.

additional_attributes
object

The contact's custom fields. Format: { "field_slug": value }. Slugs must match custom fields registered with the CONTACT context. Invalid or nonexistent slugs are silently ignored. Values are merged with the existing attributes; the whole object is not replaced. Values must be primitives (string, number, boolean or null). Example: { "cpf": "12345678900", "valor_total": 2500.00 }

custom_fields
object

Updates the contact's custom field values, by slug. Covers select ({ "slug": "<option_id>" }), multi_select ({ "slug": ["", ""] }) and text ({ "slug": "value" }). For number/date, use additional_attributes, which keeps the native type. Atomic validation: if any value is invalid, no custom field is saved. A slug with no matching custom field returns 404; an invalid option returns 422; a non-text value in a text field returns 400. Don't send it together with additional_attributes in the same payload: saving additional_attributes overwrites custom_fields. The option_id values come from GET /v1/custom-fields/{id}/options.

business
string | null

ID of the Business the contact belongs to (null to remove).

Response

Contact updated successfully

name
string
required

Contact name

company
any
required

Contact's company

_id
string

Contact ID

id
string

Contact ID (same value as _id)

country_code
string

Country code of the number. Absent, along with the phone, when the contact only has a WhatsApp identifier.

email
string

Contact's email

last_activity_at
any

Date of the contact's last activity

phone_number
string

The contact's phone number. Absent when the contact only has a WhatsApp identifier.

linkedin_identifier
string

LinkedIn profile identifier

job_title
string

Contact's job title

seniority
string

Contact's seniority level

department
string

Contact's department

country
string

Contact's country

region
string

Contact's state or region

city
string

Contact's city

experience
string

Contact's professional experience

skills
string

Contact's skills

additional_attributes
object

Values of the contact's custom fields, by slug. When saved via additional_attributes, the value comes in the envelope { id, value, type, updatedAt }. When saved via custom_fields (PUT), it comes raw: the option_id (select), the list of option_id (multi_select) or the text (text).

business
string | null

ID of the Business the contact belongs to

notes
object[]

Notes recorded on the contact

marketing_opt_out
object

Marketing opt-out per communication channel (whatsapp, email, linkedin). Absent or empty when the contact hasn't opted out of any channel.

whatsapp_user_id
string

The contact's WhatsApp identifier (BSUID), assigned by Meta. Opaque string.

whatsapp_username
string

The contact's WhatsApp @username, as Meta sends it

whatsapp_parent_user_id
string

The contact's WhatsApp parent_user_id, as Meta sends it

createdAt
any

Contact creation date

updatedAt
any

Contact update date