Update contact
PATCH /contacts/ — update fields on an active object
Endpoint
/contacts/{contactId}Authentication: Bearer JWT Path parameter:
contactId — object ID
Query parameters
?properties=phone). Names already in the default set are not duplicated. Invalid or disallowed property names return 400.Request body
The body is a JSON object with a singlefields property. Each key inside fields is a field internal_name (the same names returned in GET responses, not nested under fields in the response).
Only include keys you want to change. Omitted fields keep their current values.
| Key | Description |
|---|---|
fields | Required. Map of internal_name → value for this object type. |
fields.external_id | Optional. External identifier for sync with outside systems. |
fields.
Default response fields
200 returns the updated object using the default property set:| Property | Description |
|---|---|
id | Internal object ID |
first_name | Custom or system field (flat on the object) |
last_name | Custom or system field (flat on the object) |
email | Custom or system field (flat on the object) |
contact_owner | Assigned owner email |
external_id | External identifier (nullable) |
archived | false when active; ISO timestamp when archived |
created_at and updated_at are always included in every response (ISO 8601 UTC), even when not listed above. When an object is archived, archived_by is also included automatically.Errors
| Status | When |
|---|---|
400 | Missing contactId, invalid properties, invalid JSON, validation failure, or forbidden system field |
401 | Missing account context |
404 | Object not found |
409 | Object is archived — cannot update |
409 | Duplicate active record (unique key collision) |
Authorizations
Bearer JWT with valid account context.
Path Parameters
Object identifier
Query Parameters
Comma-separated additional property names to include alongside defaults (e.g. phone). Invalid or disallowed names return 400.
Body
Write payload for POST create and PATCH update. Keys inside fields match field internal names returned in GET responses.
Field values keyed by internal_name. Custom account fields use the same key names.
Response
Updated
Flat JSON object; custom fields at top level alongside id and external_id. created_at and updated_at are always present.
Assigned owner email
"jane@example.com"
false when active, or ISO timestamp when archived
Present when archived
