Skip to content

Reference / Contacts

Update contact

PATCH/api/v1/contacts/{id}

Changes the fields you send. The email address cannot be changed.

Only the workspace's own contacts can be changed: a shared contact returns 403 shared_contact.

Scope

  • contacts:write Edit contacts – the person behind the key must be editor or higher.

Path parameters

idstringrequired
The contact's ID.

Body

JSON, Content-Type: application/json. Unknown fields return 422.

first_namestring | null
First name.at most 100 characters
last_namestring | null
Last name.at most 100 characters
companystring | null
Company.at most 200 characters
phonestring | null
Phone number. Without a country code, it is interpreted according to the workspace's country.at most 50 characters
fieldsobject<string | number | boolean>
Custom fields by key (GET /fields). The values are checked against the field's type. null or "" removes a value. Keys that are not fields in the workspace are saved as free-form fields. Sensitive fields (personal identity numbers) cannot be set via the API.
tagsarray<string>
Replaces all tags. Do not use together with add_tags/remove_tags.at most 50
add_tagsarray<string>
Tags to add; the others are kept.at most 50
remove_tagsarray<string>
Tags to remove.at most 50

Response

200 The contact after the change.

idstringrequired
The contact's ID.
emailstringrequired
The email address (lower case). Never changes: consents and suppressions apply to the address.
first_namestring | nullrequired
last_namestring | nullrequired
companystring | nullrequired
phonestring | nullrequired
In international format (E.164), e.g. +46701234567.
statusstringrequired
active: can receive mailings · unsubscribed: has unsubscribed from everything · bounced: the address bounces · complained: has reported spam · deleted: erased (GDPR), the personal data is gone.activeunsubscribedbouncedcomplaineddeleted
fieldsobject<string | number | boolean>required
Custom fields by key (see GET /fields). Sensitive fields, such as personal identity numbers, are never sent out.
tagsarray<string>required
sourcestringrequired
How the contact was added: manual, import, form, api …
consentobjectrequired
consent.atstring (time, ISO 8601) | nullrequired
When consent was given.
consent.sourcestring | nullrequired
How the person consented, in your own words.
suppressionobject | nullrequired
The workspace's suppression of the address. A suppressed address never receives mailings, regardless of status.
suppression.reasonstringrequired
unsubscribed, bounced, complained, manual or imported.
suppression.created_atstring (time, ISO 8601)required
When the address was suppressed.
sharedbooleanrequired
Shared from a level above in the organisation: can be read and receive mailings from here, but can only be changed where it belongs.
created_atstring (time, ISO 8601)required
When the contact was created.
updated_atstring (time, ISO 8601)required
When the contact was last changed.
unsubscribed_atstring (time, ISO 8601) | nullrequired
When the person unsubscribed.
listsarray<object>required
The workspace's lists that the contact is on. Empty for a shared contact.
lists[].list_idstringrequired
lists[].namestringrequired
lists[].statusstringrequired
subscribed: on the list · pending: waiting to confirm by email · unsubscribed: has left the list.subscribedpendingunsubscribed
lists[].subscribed_atstring (time, ISO 8601) | nullrequired
When the person joined the list.

Errors