Create contact

POST/api/v1/createContact

Create or update a contact by email

Permission

An OAuth access token with this scope. How to get a token

contacts:create
Create contacts.

Parameters

Not sure what to enter? Here’s where to find IDs.

client_idquery · stringrequired
The 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.

companyAccountRefstring or null
emailstring (email)required
firstNamestringrequired
Length at least 1.
lastNamestring or null
companystring or null
phonestring or null
mobilestring or null
jobTitlestring or null
addressstring or null
^customfield\d+$keys matching · any

Responses

200Contact created or updated.
dataobjectrequired
Fields
statusstringrequired
Always success.
messagestringrequired
contactobjectrequired
Fields
idstringrequired
emailstring (email)required
firstNamestringrequired
lastNamestringrequired
fullNamestringrequired
phonestringrequired
mobilestringrequired
jobTitlestringrequired
addressstringrequired
companystring
companyAccountRefstring
createdAtvaries
Fields

Exactly one of these:

Option 1number
Option 2string (date-time)
updatedAtvariesrequired
Fields

Exactly one of these:

Option 1number
Option 2string (date-time)
400Invalid request or validation failure.
dataobjectrequired
Fields
statusstringrequired
Always error.
messagestringrequired
codestring
documentRefstring
assetGenerationIdstring
errorsarray of object
Item fields
fieldstringrequired
messagestringrequired
401Missing or invalid bearer token or client ID.
errorstringrequired
error_descriptionstring
403Insufficient scope, missing add-on, usage limit, or permission denial.

Exactly one of these:

OAuthError
errorstringrequired
error_descriptionstring
ApiErrorEnvelope
dataobjectrequired
Fields
statusstringrequired
Always error.
messagestringrequired
codestring
documentRefstring
assetGenerationIdstring
errorsarray of object
Item fields
fieldstringrequired
messagestringrequired
429Shared company API request quota exceeded. Wait before retrying.
Retry-Afterheader · integer
Minimum seconds to wait before retrying.Value at least 1.
dataobjectrequired
Fields
statusstringrequired
Always error.
messagestringrequired
retryAfterSecondsintegerrequired
Value at least 1.

Rate limit

120 requests a minute per company, shared across REST, Zapier and MCP. On a 429, wait for Retry-After.