Skip to main content

Queue Contract Price Re-reviews

Queue a re-review for one contract price row or for every contract price row not yet reviewed, with the write scope and a member role in the workspace.

Two routes queue re-reviews. POST /v1/money-found/rows/{leverId}/{key}/review queues one row. POST /v1/money-found/reviews/run queues every contract price row that no review covers yet. Both need the write scope and a key whose person is a member or above. The review runs in the background; the verdict appears in GET /v1/money-found/reviews and on the row's plausibility.review.

POST/v1/money-found/rows/{leverId}/{key}/review

Path parameters

leverId*stringcontract_price_underbilled or contract_price_overbilled.
key*stringThe row key from the ledger.

The review reads the invoice, the contract versions and the Contracts app documents again, and keeps a value only when its quote is found in the document. A review already pending or running is returned as is. A finished or failed one is queued again. The response is { "review": ... } in the shape of an entry of the reviews list. Errors: 400 when the lever is not a contract price lever or the key is not a contract price row, 403 for a missing scope or role, and 404 when the price check behind the row does not exist in the workspace.

cURL: Re-review one row

curl -X POST "https://api.talonic.com/v1/money-found/rows/contract_price_underbilled/r_3f9a1c/review" \
  -H "Authorization: Bearer $TALONIC_API_KEY"

Response: 201 The queued review (abridged)

{ "review": { "id": "b3a0f6c4-7d1e-4a2b-9c58-0e6f1d2a3b47", "lever_id": "contract_price_underbilled", "row_key": "r_3f9a1c", "status": "pending", "verdict": null } }
POST/v1/money-found/reviews/run

Response fields

queuedintegerReviews newly queued.
alreadyintegerContract price rows that were not queued.
rowsintegerContract price rows in the ledger.

The bulk route queues one review per group of identical contract price rows that no review covers yet, up to the configured bulk maximum. Rows that the invoice's own printed inputs already settle are not queued. A row keeps its key across recomputes, so a reviewed row is left alone until its billed price or contract price changes.

Response: 201 What was queued

{ "queued": 12, "already": 31, "rows": 43 }
Queueing is not an answer. Poll GET /v1/money-found/reviews until the counts for pending and running reach 0, then read the ledger again: confirmed rows return to the totals, and excluded rows move to not_finding_total.

Frequently asked questions

Which rows can be re-reviewed?+
Only rows of the contract price levers, contract_price_underbilled and contract_price_overbilled. Any other lever or a key that is not a contract price row returns 400.
What happens when I queue a row twice?+
A review already pending or running is returned as is and not queued again. A finished or failed review is queued again, so a second call after a verdict re-reads the documents.
What does already count in the bulk response?+
The contract price rows that were not queued, for example rows already covered by a review and rows that the invoice's own printed inputs already settle. One request queues at most the configured bulk maximum of rows.