Edit Contact

Edits a contact by id. The fields you send replace the stored ones, tags are added and removeTags are removed. The email cannot be changed.

PATCH/v1/crm/contacts/:id

Authentication

API keyAuthorization: Bearer

Secret API key as Authorization: Bearer sk_live_…. Create it in the dashboard under CRM › Contacts › API Keys. Keys are for servers only. Needs the contacts:write scope.

Path Parameters

idstring
required

Contact id.

Body Parameters

namestring
optional

Full name (up to 120 characters). Or send firstName and lastName.

firstNamestring
optional

First name (up to 60 characters).

lastNamestring
optional

Last name (up to 60 characters).

phonestring
optional

One phone number (up to 40 characters).

phonesarray
optional

Up to 10 phone numbers.

imagestring
optional

Photo URL.

websitestring
optional

Website URL.

streetAddressstring
optional

Street address (up to 200 characters).

typestring
optional

Contact type, for example buyer, seller or renter.

stagestring
optional

Pipeline stage, for example new-lead.

pricenumber
optional

Budget or price of interest (0 or more).

tagsarray
optional

Tags to add (up to 50, each up to 64 characters). Existing tags are kept.

removeTagsarray
optional

Tags to remove (up to 50).

Responses

200Success
application/json
idstring

Contact id. Use it in the other contact endpoints.

emailstring

Email of the contact. It never changes through the API.

namestring

Full name.

phonesarray

Phone numbers.

imagestring | null

Photo URL.

websitestring | null

Website URL.

streetAddressstring | null

Street address.

typestring | null

Contact type, for example buyer, seller or renter.

stagestring | null

Pipeline stage. New contacts start in new-lead.

pricenumber | null

Budget or price of interest.

sourcestring | null

Where the lead comes from, as shown in the CRM.

tagsarray

Tags of the contact.

externalIdsarray

Your ids for this contact: objects with source and id.

createdAtstring | null

ISO 8601 creation time.

updatedAtstring | null

ISO 8601 time of the last change.

Errors

401Missing, invalid or revoked API key. The body is { error: { code, message } }.
403The key lacks the required scope (contacts:read or contacts:write), or the account is not active.
429More than 120 requests per minute for this key. Wait for the Retry-After header.
404No such contact in this account.
422Validation failed. error.details maps each field to a message; unknown fields are rejected.

Notes

  • Unlike Create or Update Contact, this call replaces what you send. Fields you leave out stay as they are.
Request
curl --request PATCH \
--url "https://api.pandaidx.com/v1/crm/contacts/6ad0c3f2e4b1a2c3d4e5f607" \
--header "Authorization: Bearer {{api_key}}"
Response200 OK
{
"id": "6ad0c3f2e4b1a2c3d4e5f607",
"email": "ana@example.com",
"name": "Ana Torres",
"phones": [
"+13055550100"
],
"image": null,
"website": null,
"streetAddress": null,
"type": "buyer",
"stage": "contacted",
"price": null,
"source": "zapier",
"tags": [
"buyer"
],
"externalIds": [
{
"source": "zapier",
"id": "abc-1"
}
],
"createdAt": "2026-10-14T13:40:12.000Z",
"updatedAt": "2026-10-14T14:02:51.000Z"
}