GoHighLevel Contacts API

Update Contact

PUT/contacts/:contactId

PUT /contacts/:contactId This endpoint takes 1 path parameter and 47 body fields, requires the contacts.write scope and authenticates with a sub-account (location) token.

Request and authentication

Method
PUT
Full URL
https://services.leadconnectorhq.com/contacts/:contactId
Scopes
contacts.write
Token type
Sub-account (location) token
Accepted auth
OAuth Access Token, Private Integration Token
API version header
Version: 2021-07-28
Schema verified
22 June 2026

Notes from the field

  • For multi-contact field backfills, use `hylo_bulk_execute_ghl_api` with endpoint_name='contacts/update-contact'.
  • Pass `tags` inline to add tags in the same call as the update (skip add-tags).
  • For email-only changes, this single call replaces upsert + add-tags.

This endpoint is safe to fan out in parallel, so a batch of records costs roughly one round trip instead of one per record. Hylo's bulk tools do that server-side and retry HighLevel's 429s with back-off.

Path parameters

Substituted into the URL. Required by definition.

NameTypeDescription
contactIdrequiredstring

Example: ocQHyuzHvysMo5N5VsXc

Request body

JSON body fields. Nested objects are shown indented under their parent.

NameTypeDescription
firstNamestring

Example: rosan

lastNamestring

Example: Deo

namestring

Example: rosan Deo

emailstring

Example: rosan@deos.com

phonestring

Example: +1 888-888-8888

address1string

Example: 3535 1st St N

citystring

Example: Dolomite

statestring

Example: AL

postalCodestring

Example: 35061

websitestring

Example: https://www.tesla.com

timezonestring

Example: America/Chihuahua

dndboolean

Example: true

dndSettingsobject
Callobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
Emailobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
SMSobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
WhatsAppobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
GMBobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
FBobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
inboundDndSettingsobject
allobject
statusrequiredstring

One of: active, inactive

messagestring
tagsarray

This field will overwrite all current tags associated with the contact. To update a tags, it is recommended to use the Add Tag or Remove Tag API instead.

Example: nisi sint commodo amet,consequat

customFieldsarray
sourcestring

Example: public api

dateOfBirthobject

The birth date of the contact. Supported formats: YYYY/MM/DD, MM/DD/YYYY, YYYY-MM-DD, MM-DD-YYYY, YYYY.MM.DD, MM.DD.YYYY, YYYY_MM_DD, MM_DD_YYYY

Example: 1990-09-25

countrystring

Example: US

assignedTostring

User's Id

Example: y0BeYjuRIlDwsDcOHOJo

Response fields

Top-level fields returned on a successful call.

NameTypeDescription
succededboolean

Example: true

contactobject
idstring

Example: seD4PfOuKoVMLkEZqohJ

namestring

Example: rubika deo

locationIdstring

Example: ve9EPM428h8vShlRW1KT

firstNamestring

Example: rubika

lastNamestring

Example: Deo

emailstring

Example: rubika@deos.com

emailLowerCasestring

Example: rubika@deos.com

timezonestring

Example: Asia/Calcutta

companyNamestring

Example: DGS VolMAX

phonestring

Example: +18832327657

dndboolean

Example: true

dndSettingsobject
Callobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
Emailobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
SMSobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
WhatsAppobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
GMBobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
FBobject
statusrequiredstring

One of: active, inactive, permanent

messagestring
codestring
typestring

Example: read

sourcestring

Example: public api

assignedTostring

Example: ve9EPM428h8vShlRW1KT

address1string

Example: 3535 1st St N

citystring

Example: ruDolomitebika

statestring

Example: AL

countrystring

Example: US

postalCodestring

Example: 35061

websitestring

Example: https://www.tesla.com

tagsarray

Example: nisi sint commodo amet,consequat

dateOfBirthstring

Example: Date format YYYY-MM-DD

dateAddedstring

Example: 2021-07-02T05:18:26.704Z

dateUpdatedstring

Example: 2021-07-02T05:18:26.704Z

Example request

Copy-paste ready. Swap YOUR_TOKEN for your access token or Private Integration Token, and the sample ID for your own.

curl -X PUT 'https://services.leadconnectorhq.com/contacts/ocQHyuzHvysMo5N5VsXc' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Version: 2021-07-28' \
  -H 'Content-Type: application/json' \
  -d '{
    "firstName": "rosan",
    "lastName": "Deo",
    "name": "rosan Deo"
  }'

Skip the schema lookup

Hylo gives your AI agent this schema — and the other 52 documented here — without you looking anything up. Ask in plain English; it picks the endpoint, fills the body, and can run the call against your own sub-account.

More contacts endpoints