POST
https://api.nue.io/cpq/quotes/{quoteId}:update
Applies one or more actions to an existing quote, then re-runs the same pricing and tax cascade the Nue Line Editor runs internally.
Action-oriented, not payload-oriented. You do not send the quote you want; you send an ordered list of actions naming what to do. Fields you omit are untouched, and lines you omit are untouched — a line is deleted only when you name it in a deleteLineItems action. This is what separates this endpoint from PATCH /api/objects/Quote/{id}, which writes the field you send and recalculates nothing.
The six actions: updateHeaderFields, updateLineItems, deleteLineItems, addLineItems, replacePriceTags, removePriceTags.
Key behaviors:
- Actions are re-ordered server-side into a canonical sequence of stages (header fields → deletes → price-tag actions → line updates → adds). The sort is stable within a stage, so same-stage actions keep your submitted order
removePriceTags and replacePriceTags share a stage and their target line ids are not covered by the conflict check, so two overlapping tag actions run in submitted order and the result depends on it — order them deliberately or split the request
updateHeaderFields may appear at most once, and each line may be targeted at most once — both violations return CONFLICTING_ACTIONS
isCommit: false runs the full cascade in memory and returns the same shape without persisting anything
recalc selects which callouts run: AUTO (default), PRICING_ONLY, TAX_ONLY, NONE — case-sensitive
fieldValues keys are Nue field names (camelCase, e.g. quantity, subscriptionTerm, paymentTerm) validated against the Quote / QuoteLineItem describe; custom fields use their Salesforce API name. Salesforce field API names such as SubscriptionTerm__c are for the Apex global method, not for REST
- Engine-calculated fields (totals, tax, ACV/TCV, delta metrics, list and sales prices) are rejected with
FIELD_NOT_UPDATABLE
- Summary, split, ramp, and subscription-context lines are not editable; required and bundled bundle children cannot be removed on their own
- The whole update is one transaction: a pricing failure rolls everything back
- The quote must still be editable — an activated, ordered, or approval-locked quote returns
QUOTE_NOT_EDITABLE
Activated orders and live subscriptions are out of scope — use the Change Order endpoint instead.
quoteIdstringThe id of the quote to update.
acceptstringGenerated from available response content types
bodyobject<p>Action-oriented update request. You send an ordered list of actions describing what to do, not the desired quote document. Fields and lines you do not name are left untouched.</p>
200<p>The quote was updated (or, with isCommit=false, previewed) successfully.</p>
400<p>Invalid request — unknown action, conflicting actions, invalid or non-updatable field, non-editable line, failed business rule, or a stale expectedLastModified.</p>
500Internal server error. Nothing was committed.
curl --request POST \
--url https://api.nue.io/cpq/quotes/{quoteId}:update \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"isCommit": true,
"recalc": "AUTO",
"actions": [
{
"action": ""
}
]
}'