Approval Status and Queues
8 min
two read endpoints cover the two questions you ask about an approval in flight where does this record stand? and what is waiting on this person? get approval status for a record get /cpq/approval requests parameter type description recordid string the record to read approval status for curl x get 'https //api nue io/cpq/approval requests?recordid=0q0kb000000xyzakak' \\ h 'nue api key your api key' { "status" "success", "data" { "requestid" "a0tkb000000vwcdmak", "recordid" "0q0kb000000xyzakak", "status" "pending", "islocked" true, "submittedmessage" "discount approved by regional director on the call", "rejectionmessage" null, "steps" \[ { "approvalid" "a0ukb000000wxdemak", "stepid" "a0skb000000uvbcmak", "stepname" "deal desk", "processname" "standard discount approval", "status" "approved", "stepstatus" "pending", "approveruserid" "005kb000000wxyziak", "originalapproveruserid" null, "reassignedfromapprovalid" null, "rejectionmessage" null, "dependsonstepid" null, "assigneddate" "2026 09 03t18 22 11 000z", "acteddate" "2026 09 03t19 04 52 000z", "submitter" "005kb000000qrstuak" } ] }, "warnings" \[], "errors" \[] } status and stepstatus are different fields a row's status is that individual approval record's own outcome — assigned , approved , rejected , reassigned , or revoked stepstatus is the step level rollup across every approver on that step they routinely disagree, and that is correct in the response above one approver has already approved ( status "approved" ) while the step itself is still open ( stepstatus "pending" ) because another approver has not responded render the rollup for the step header and the row status per approver reading the trail each row tells you who was asked, what they did, and when assigneddate and acteddate — when the approval landed and when it was answered acteddate is null while still outstanding rejectionmessage — the reason given, on rejected rows originalapproveruserid and reassignedfromapprovalid — populated only on rows produced by a reassignment, giving you the previous approver and the approval it came from dependsonstepid — the step that must resolve before this one becomes active, so you can render a sequential path correctly rather than showing every step as pending at once list pending approvals returns an approver's outstanding work get /cpq/approvals parameter type description assignee string salesforce user id whose queue to read defaults to the calling user status string filter by approval status, for example pending cursor string cursor from a previous response's nextcursor limitsize integer page size values above 100 are clamped to 100 curl x get 'https //api nue io/cpq/approvals?status=pending\&limitsize=50' \\ h 'nue api key your api key' { "status" "success", "data" { "assignee" "005kb000000wxyziak", "approvals" \[ { "approvalid" "a0ukb000000wxdemak", "recordid" "0q0kb000000xyzakak", "recordname" "q 01842", "processname" "standard discount approval", "stepname" "deal desk", "stepstatus" "pending", "assigneddate" "2026 09 03t18 22 11 000z", "submitter" "005kb000000qrstuak" } ], "nextcursor" "eyjvijoxmdb9", "limit" 50 }, "warnings" \[], "errors" \[] } recordname is included so you can render a readable queue without a second lookup per row paging pass the nextcursor from one response as the cursor of the next nextcursor is null on the last page curl x get 'https //api nue io/cpq/approvals?status=pending\&limitsize=50\&cursor=eyjvijoxmdb9' \\ h 'nue api key your api key' limitsize is clamped, not rejected asking for more than 100 returns 100 rather than an error, and the limit field in the response tells you the page size actually applied read limit rather than assuming you got what you asked for only a zero or negative limitsize is treated as invalid building an approver queue combining the two endpoints gives you a working queue in three calls get /cpq/approvals?assignee={userid}\&status=pending — the rows to display, with recordname for each get /cpq/approval requests?recordid={recordid} — on click, the full path for that record so the approver can see who else is involved and what came before them post /cpq/approvals\ approve or \ reject with the approvalid from step 1