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.
/v1/crm/contacts/:idAuthentication
Authorization: BearerSecret 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
idstringContact id.
Body Parameters
namestringFull name (up to 120 characters). Or send firstName and lastName.
firstNamestringFirst name (up to 60 characters).
lastNamestringLast name (up to 60 characters).
phonestringOne phone number (up to 40 characters).
phonesarrayUp to 10 phone numbers.
imagestringPhoto URL.
websitestringWebsite URL.
streetAddressstringStreet address (up to 200 characters).
typestringContact type, for example buyer, seller or renter.
stagestringPipeline stage, for example new-lead.
pricenumberBudget or price of interest (0 or more).
tagsarrayTags to add (up to 50, each up to 64 characters). Existing tags are kept.
removeTagsarrayTags to remove (up to 50).
Responses
application/jsonidstringContact id. Use it in the other contact endpoints.
emailstringEmail of the contact. It never changes through the API.
namestringFull name.
phonesarrayPhone numbers.
imagestring | nullPhoto URL.
websitestring | nullWebsite URL.
streetAddressstring | nullStreet address.
typestring | nullContact type, for example buyer, seller or renter.
stagestring | nullPipeline stage. New contacts start in new-lead.
pricenumber | nullBudget or price of interest.
sourcestring | nullWhere the lead comes from, as shown in the CRM.
tagsarrayTags of the contact.
externalIdsarrayYour ids for this contact: objects with source and id.
createdAtstring | nullISO 8601 creation time.
updatedAtstring | nullISO 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.
curl --request PATCH \--url "https://api.pandaidx.com/v1/crm/contacts/6ad0c3f2e4b1a2c3d4e5f607" \--header "Authorization: Bearer {{api_key}}"
{"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"}