Skip to main content
PUT
Python
Unlike the upsert endpoint which matches by email or phone, this endpoint updates a specific contact by their ID. Use this when you need a deterministic update by ID — especially when changing a contact’s email address.

When to Use This

How It Works

  • Only provided fields are updated — omitted fields are preserved
  • Custom fields are deep merged — existing custom fields not included in the request are kept
  • Automations are triggered — field change detection and automation triggers work the same as upsert
  • Soft-deleted contacts are restored — if the contact was deleted, it will be restored with the provided data
Update channel-specific marketing consent for a contact:
Both fields are optional. Omitting a channel leaves its current consent status unchanged. Setting true opts the contact in, false opts them out.
This endpoint does not create new contacts. If no contact exists with the given ID, a 404 error is returned.

Example: Change a Contact’s Email

1

Look up the contact by email

Response: { "data": { "id": 42, "email": "old@example.com", ... } }
2

Update using the contact ID

Common Errors

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
integer
required

Contact ID

Body

application/json
email
string

New email address

phone
string

New phone number

status
string

Contact status

source
string

Contact source tag

sourceType
enum<string>

Contact source type classification

Available options:
database,
minimo,
third_party
customFields
object

Custom fields to update (merged with existing)

Channel-specific marketing consent preferences

Response

Contact updated

data
object