Pending Reviews
List failing validation outcomes awaiting review with GET /v1/structuring/approvals/pending: the newest 100 fail rows, each naming its check and result.
The pending review queue is a cross-run feed of data quality issues: every validation check outcome whose status is fail or error, newest first. GET /v1/structuring/approvals/pending returns each such outcome with its result_id, the check's name and severity, and the failure message/details — enough to render a triage list without further fetches. Use it to drive review workflows or to monitor quality trends across all structuring runs.
Items are individual failing check outcomes, not results: a result that failed three checks contributes three rows sharing one result_id. Group by result_id for a per-record queue, drill into a record with [GET /v1/structuring/results/{id}/checks](result-checks) to see its passing outcomes too, then record a decision with [POST /v1/structuring/approvals/{id}/approve or /reject](approve-reject-result). Note the queue lists check failures regardless of severity — warning rows appear alongside critical ones, so filter client-side on severity if only hard failures matter to your reviewers.
/v1/structuring/approvals/pendingcurl
curl -s https://api.talonic.com/v1/structuring/approvals/pending \
-H "Authorization: Bearer tlnc_your_api_key"Response
Response fields
Response
{
"data": [
{
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"result_id": "9c2f6a1e-3b7d-4c58-9e21-8f4a5d6b7c80",
"check_id": "5fee4bba-8380-44b8-9780-5e4548424b3c",
"status": "fail",
"message": "Field \"total_amount\" value 1500000 is out of range [0, 1000000]",
"details": null,
"created_at": "2026-08-29T11:41:12.020Z",
"check_name": "Total amount range",
"severity": "error"
}
]
}Errors
Error responses
Each row carries enough context to route work without joins: check_name and severity identify the rule and its weight, message explains the failure in plain language, and status distinguishes real data violations (fail) from broken check configurations (error). A spike of error rows is an operator signal — it usually means a check's config no longer matches the schema (a renamed field, an invalid regex) — and fixing the check stops the noise at the source.
The queue is capped at the newest 100 rows with no cursor, so at high flag rates treat it as a work-stealing feed rather than a complete backlog: poll, action the visible items, and older entries surface as the newest ones are resolved. If the queue grows faster than reviewers drain it, tighten the checks that generate noise (or drop their severity out of your gate rule's scope) rather than paging harder — a persistent 100-deep queue is a signal that gating thresholds and data quality have drifted apart.