Upsert an image in a named document or template block
Copies an HTTPS image into QuoteCloud storage, replaces one image or gallery cell and verifies the saved assignment. Does not send or change the document status. Sent and read-only documents are refused before import. Empty sourceUrl leaves the image unchanged with a no_source_image warning. Add documentPagePreview and documentPdfLink as separate rendering steps.
Permission
An OAuth access token with this scope. How to get a token
documents:writeParameters
Not sure what to enter? Here’s where to find IDs.
client_idquery · stringrequiredRequest body
Sent as application/json.
documentRefstringrequiredtargetstringblockIdstringcellIdstringsourceUrlstringfileNamestringcontentTypestringimage/png, image/jpeg, image/webp, image/gif. sourceSystemstringsourceFileIdstringsourceVersionstringidempotencyKeystringlayoutobjectFields
fitstringcontain, cover. focalPointobjectFields
xnumberrequiredynumberrequiredzoomnumberaltTextstringaltTextstringfitstringcontain, cover. focalPointXnumberfocalPointYnumberzoomnumberNeeds one of target, blockId.
Responses
200Applied, already applied, or empty-source no-op. Verification checks stored block data; rendering is a separate operation.
dataobjectrequiredFields
statusstringrequiredsuccess. successbooleanrequiredappliedbooleanrequiredalreadyAppliedbooleanrequiredreplayedbooleandocumentRefstringrequireddocumentIdstringrequiredblockIdstringblockLinkIdstring or nullcellIdstringassetIdstringrevisionTokenstringimageobjectFields
cellIdstringrequiredassetIdstring or nullrequiredfitstringrequiredcontain, cover, fill, none, scale-down. fitIsDefaultbooleanrequiredfocalPointobjectrequiredFields
xnumberynumberzoomnumberrequiredaltTextstring or nullrequireddataItemstring or nullrequiredpreviousImageobjectFields
cellIdstringrequiredassetIdstring or nullrequiredfitstringrequiredcontain, cover, fill, none, scale-down. fitIsDefaultbooleanrequiredfocalPointobjectrequiredFields
xnumberynumberzoomnumberrequiredaltTextstring or nullrequireddataItemstring or nullrequiredpdfInvalidatedbooleanretryablebooleanverifiedobjectFields
blockbooleanreadbackobjectwarningsarray of objectrequiredItem fields
codestringmessagestringnextStepsobjectFields
generatePdfstringpagePreviewstring400Invalid request or validation failure.
dataobjectrequiredFields
statusstringrequirederror. 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
statusstringrequirederror. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired404Requested resource was not found in the token's company.
dataobjectrequiredFields
statusstringrequirederror. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired409Read-only, idempotency reuse, or revision/verification conflict. retryable is false for read-only and key reuse; true for a second revision conflict.
No response body.
415Unsupported image MIME type. retryable is false.
No response body.
423Edit lease or element lock busy. retryable is true.
No response body.
429Shared company API request quota exceeded. Wait before retrying.
Retry-Afterheader · integerdataobjectrequiredFields
statusstringrequirederror. messagestringrequiredretryAfterSecondsintegerrequired500Unexpected server error.
dataobjectrequiredFields
statusstringrequirederror. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired502Download or storage failure. retryable is true.
No response body.
504Image download timeout. retryable is true.
No response body.
Rate limit
120 requests a minute per company, shared across REST, Zapier and MCP. On a 429, wait for Retry-After.