Update a contact
Supply exactly one of contactId or lookupEmail.
Permission
An OAuth access token with this scope. How to get a token
contacts:writeCreate, update, and remove contacts.
Parameters
Not sure what to enter? Here’s where to find IDs.
client_idquery · stringrequiredThe Client ID of your OAuth client. It’s public, and goes on every request alongside your access token. Find it in QuoteCloud under Settings → API dashboard → Manage Integrations → OAuth Clients.Length at least 1.
Request body
Sent as application/json.
contactIdstringLength at least 1.
lookupEmailstring (email)Length at least 1.
emailstring (email) or nullfirstNamestring or nulllastNamestring or nullcompanystring or nullcompanyAccountRefstring or nullphonestring or nullmobilestring or nulljobTitlestring or nulladdressstring or null^customfield\d+$keys matching · anyNeeds one of contactId, lookupEmail.
Responses
200Contact updated.
dataobjectrequiredFields
statusstringrequiredAlways
success. messagestringrequiredcontactobjectrequiredFields
idstringrequiredemailstring (email)requiredfirstNamestringrequiredlastNamestringrequiredfullNamestringrequiredphonestringrequiredmobilestringrequiredjobTitlestringrequiredaddressstringrequiredcompanystringcompanyAccountRefstringcreatedAtvariesFields
Exactly one of these:
Option 1numberOption 2string (date-time)updatedAtvariesrequiredFields
Exactly one of these:
Option 1numberOption 2string (date-time)400Invalid request or validation failure.
dataobjectrequiredFields
statusstringrequiredAlways
error. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired401Missing or invalid bearer token or client ID.
errorstringrequirederror_descriptionstring403Insufficient scope, missing add-on, usage limit, or permission denial.
Exactly one of these:
OAuthError
errorstringrequirederror_descriptionstringApiErrorEnvelope
dataobjectrequiredFields
statusstringrequiredAlways
error. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired404Requested resource was not found in the token's company.
dataobjectrequiredFields
statusstringrequiredAlways
error. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired409Request conflicts with resource state or an idempotent request.
dataobjectrequiredFields
statusstringrequiredAlways
error. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired429Shared company API request quota exceeded. Wait before retrying.
Retry-Afterheader · integerMinimum seconds to wait before retrying.Value at least 1.
dataobjectrequiredFields
statusstringrequiredAlways
error. messagestringrequiredretryAfterSecondsintegerrequiredValue at least 1.
Rate limit
120 requests a minute per company, shared across REST, Zapier and MCP. On a 429, wait for Retry-After.