Create document

POST/api/v1/createDocument

Create a blank document or a document from a template

Creates a draft, optionally replaces template text placeholders, adds recipients and pricing rows, and optionally sends or schedules the document. autosend and sendAt are mutually exclusive. Scheduled sends require idempotencyKey; sendAt must be between five minutes and one year in the future. When a recipient uses existingContactEmail, a grant-backed token also needs contacts:read.

Permission

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

documents:create
Create documents and read creation metadata.

existingContactEmail needs contacts:read.

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.
x-quotecloud-zapier-versionheader · string
Sent by the QuoteCloud Zapier integration. You can leave this out.

Request body

Sent as application/json.

templatestring
Convex ID of a company or system template.
titlestring
Default Untitled Document.
subtitlestring
quotecloudEmailAddressstring (email)
Active company member to own the document.
blockValuesarray of object
Item fields
blockTypestringrequired
Always textBlock.
blockLinkIdstringrequired
valuestringrequired
recipientsarray of object
Items at most 100.
Item fields
emailstring (email)
firstNamestring
lastNamestring
phonestring
phoneNumberstring
mobilestring
mobileNumberstring
jobTitlestring
addressstring
companystring
companyAccountRefstring
positionstring
One of Primary, To, CC, BCC, primary, toRecipient, ccRecipient, bccRecipient.
rolestring
One of Primary, To, CC, BCC, primary, toRecipient, ccRecipient, bccRecipient.
allowOpenedEmailNotificationvaries
Boolean coercion accepted by the v1 compatibility routes.
Fields

Exactly one of these:

Option 1boolean
Option 2number
One of 0, 1.
Option 3string
One of true, false, 1, 0, yes, no, y, n.
existingContactEmailstring (email)
addToContactBookvaries
Boolean coercion accepted by the v1 compatibility routes.
Fields

Exactly one of these:

Option 1boolean
Option 2number
One of 0, 1.
Option 3string
One of true, false, 1, 0, yes, no, y, n.
^customfield\d+$keys matching · any

Needs one of existingContactEmail, email, firstName.

pricingTablesarray of object
Item fields
tableIdstring
labelstringrequired
notestring
rowTypestring
One of pricing, heading. Default pricing.
pricevaries
Fields

Exactly one of these:

Option 1number
Option 2string
Matches ^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$.
qtyvaries
Fields

Exactly one of these:

Option 1number
Option 2string
Matches ^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$.
termBasedProductvaries
Boolean coercion accepted by the v1 compatibility routes.
Fields

Exactly one of these:

Option 1boolean
Option 2number
One of 0, 1.
Option 3string
One of true, false, 1, 0, yes, no, y, n.
termvaries
Fields

Exactly one of these:

Option 1number
Option 2string
Matches ^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$.
taxTypestring
One of percentage, static.
taxvaries
Fields

Exactly one of these:

Option 1number
Option 2string
Matches ^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$.
discountTypestring
One of percentage, static.
discountvaries
Fields

Exactly one of these:

Option 1number
Option 2string
Matches ^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$.
costvaries
Fields

Exactly one of these:

Option 1number
Option 2string
Matches ^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$.
skustring
autosendvaries
Boolean coercion accepted by the v1 compatibility routes.
Fields

Exactly one of these:

Option 1boolean
Option 2number
One of 0, 1.
Option 3string
One of true, false, 1, 0, yes, no, y, n.
sendAtstring (date-time)
idempotencyKeystring
senderRefstring
sendToarray of string (email)
sendCCarray of string (email)
sendBCCarray of string (email)
subjectstring
bodystring
HTML email body.
attachPDFvaries
Boolean coercion accepted by the v1 compatibility routes.
Fields

Exactly one of these:

Option 1boolean
Option 2number
One of 0, 1.
Option 3string
One of true, false, 1, 0, yes, no, y, n.
expiresAtstring (date-time)
deliveryRuleRefstring
timeZonestring
Default UTC.
^customfield\d+$keys matching · any

Responses

200Document created.
dataobjectrequired
Fields
messagestringrequired
Always Document created.
statusstringrequired
Always success.
zapierDocumentarray of variesrequired
Items 1 to 1.
Item fields

One or more of these:

CreatedDocumentBase
idstringrequired
documentIdstringrequired
documentRefstringrequired
documentNamestringrequired
documentOwnerstringrequired
documentTitlestringrequired
editUrlstring (uri)required
statusstringrequired
deliveryRefstring
deliveryStatusstringrequired
One of draft, scheduled, sent.
titlestringrequired
urlstring (uri)required
createdDatestring (date-time)required
modifiedDatestring (date-time)required
CreatedDocument
idstringrequired
documentIdstringrequired
documentRefstringrequired
displayIdinteger
titlestringrequired
subtitlestring
statusNamestringrequired
internalLinksobjectrequired
Fields
viewstring (uri)required
editstring (uri)required
pdfLinkstring (uri)required
pdfFilestring (uri)
recipientsarray of objectrequired
Item fields
idstringrequired
recipientRefstringrequired
firstNamestringrequired
lastNamestringrequired
fullNamestringrequired
emailstringrequired
viewLinkstring (uri)
phonestring
mobilestring
jobTitlestring
addressstring
companystring
accountRefstring
positionstring
One of primary, toRecipient, ccRecipient, bccRecipient.
ownerobjectrequired
Fields
namestringrequired
lastNamestringrequired
fullNamestringrequired
emailstringrequired
phonestring
jobTitlestring
microsoftUsernamestring
slackUsernamestring
whatsappUsernamestring
addressstring
companyobjectrequired
Fields
namestringrequired
phonestringrequired
countrystringrequired
address1stringrequired
address2stringrequired
citystringrequired
statestringrequired
postcodestringrequired
costsobjectrequired
Fields
currencystringrequired
currencySymbolstringrequired
totalMinCostnumberrequired
totalIncTaxnumberrequired
totalExcludedTaxnumberrequired
totalDiscountnumberrequired
totalTaxnumberrequired
totalMarkupnumberrequired
totalMarginnumberrequired
oneOffCostnumberrequired
oneOffTaxnumberrequired
oneOffTotalnumberrequired
fullTermCostnumberrequired
fullTermTaxnumberrequired
fullTermTotalnumberrequired
lineItemsarray of objectrequired
Item fields
tableIndexintegerrequired
tableNamestringrequired
currencystringrequired
currencySymbolstringrequired
productIdnumber
namestringrequired
descriptionstringrequired
skustring
pricenumberrequired
quantitynumberrequired
termnumber
termLabelstring
discountnumberrequired
discountPercentagenumber
additionsnumberrequired
additionsPercentagenumber
taxAmountnumberrequired
taxAmountCalculatednumber
taxPercentagenumber
totalExTaxnumberrequired
totalnumberrequired
isOneOffbooleanrequired
isSelectedbooleanrequired
isHiddenbooleanrequired
isExcludedFromTotalbooleanrequired
customColumnsobject
pricingTableSummariesarray of objectrequired
Item fields
tableIndexintegerrequired
tableNamestringrequired
currencystringrequired
currencySymbolstringrequired
totalExTaxnumberrequired
totalTaxnumberrequired
totalDiscountnumberrequired
totalIncTaxnumberrequired
signaturesarray of objectrequired
Item fields
emailstringrequired
recipientIdstringrequired
signerFirstNamestring
signerLastNamestring
signatureTypestring
One of draw, type, upload.
signedAtstring (date-time)
ipAddressstring
isSignedbooleanrequired
formSubmissionsarray of objectrequired
Item fields
formFieldsobjectrequired
sentDatestring (date-time)
statusChangedAtstring (date-time)
acceptedDatestring (date-time)
expiredDatestring (date-time)
coolingOffDatestring (date-time)
forcastDatestring (date-time)
numberOfViewsnumberrequired
forcaseConfidencenumberrequired
forcastEstimatedValuenumberrequired
customFieldsobject
statusstringrequired
pricingTablesarray of objectrequired
Item fields
dataobjectrequired
totalValuesobject
formsarray of object
Item fields
formDataJsonany
formSubmissionJsonobject
esignarray of objectrequired
Item fields
emailstringrequired
recipientIdstringrequired
signedDataobject
documentNamestringrequired
documentOwnerstringrequired
documentTitlestringrequired
editUrlstring (uri)required
deliveryRefstring
deliveryStatusstringrequired
One of draft, scheduled, sent.
urlstring (uri)required
createdDatestring (date-time)required
modifiedDatestring (date-time)required
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
409Request conflicts with resource state or an idempotent request.
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.
500Unexpected server error.
dataobjectrequired
Fields
statusstringrequired
Always error.
messagestringrequired
codestring
documentRefstring
assetGenerationIdstring
errorsarray of object
Item fields
fieldstringrequired
messagestringrequired
502Document was created or prepared but PDF/email processing failed.
dataobjectrequired
Fields
statusstringrequired
Always error.
messagestringrequired
codestring
documentRefstring
assetGenerationIdstring
errorsarray of object
Item fields
fieldstringrequired
messagestringrequired

Rate limit

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