v3

latestOpenAPI 3.1.1mit2026-07-3165481.5 MB
Contacts
v1

Update a Contact

Update a contact.

Applies a partial (merge-patch) update to the contact: only the attributes named in the request are changed; any attribute you omit is left untouched. This endpoint updates the contact's custom field values.

To set custom field values, send them under attributes.custom_fields, keyed by custom field id. The value type is inferred from the field definition — no type is sent in the request. Only simple field types may be set: text, number, boolean, and date. Prompt-capable / computed types (ai_*, contact_collection) and unknown custom field ids are rejected with 400. The updated values are returned inside the entity's data envelope.

The request is validated strictly and applied atomically: if any field fails validation, the whole request is rejected and nothing is written. Per-field errors carry a source.pointer locating the offending field; when fields fail with different statuses, the response status is the most severe one (403 over 400). Sending null as a value clears that field (merge-patch delete); clearing a field with no stored value is a no-op. A maximum of 100 custom fields may be supplied per request.

Credit Note: Updating a contact does not consume credits.

:::info Requires the custom_fields:write OAuth2 scope. :::

patch/v1/contacts/{id}

Path parameters

idstring required

The contact's ID. Note that the older string-based ID format continues to be supported.

Query parameters

account_idstring required

The Leadfeeder Account ID. The Account ID can be retrieved using the List Accounts endpoint.

Request body

Response

Contact updated

Example response

{
  "meta": {
    "request_id": "cf054205-dd8c-4473-8689-07c30fe0789f"
  }
}