Skip to main content

Approval Queue

Field Review is Talonic's central human-review surface: fields that fail a blocking validation checkpoint land in its queue for a reviewer to approve, correct, or override. The single review surface lives at /review: a Queues tab (one queue per data product) lists the fields awaiting a decision, and a Decision log tab records every action taken. Each queued field shows its source document, the schema field, and the checkpoint that flagged it.

On a queued field a reviewer can approve the extracted value, correct it to a new value, or override the checkpoint decision. The review detail view shows the value alongside the source document, with provenance tracing it back to its origin in the text and the checkpoint result that routed it here. Every approve, correct, or override is written to the decision log for audit.

For best results, work the queue for your highest-stakes data product first, since those fields gate delivery of that product. The Decision log tab gives a running audit trail across reviewers, so you can see who resolved which field and how. Corrections feed the resolved value downstream once the field clears review.

The public API exposes the same queue under /v1/field-reviews. List the held fields with GET /v1/field-reviews (filter by pipeline_id, trigger, or status), then resolve each one with POST /v1/field-reviews/:docId/:fieldKey/resolve and an action of approve, correct, or override (correct takes a corrected_value). GET /v1/field-reviews/summary returns queue counts, and the decision log is readable at /v1/field-reviews/decisions with a CSV export at /v1/field-reviews/decisions/export. This lets you script bulk resolution or integrate the queue with an external review tool while the decision log captures every action the same way it does for in-app decisions.

  • /review is the single review surface: a Queues tab (one per data product) and a Decision log tab
  • Fields reach the queue by failing a blocking validation checkpoint (on_block = review_queue)
  • Per field, a reviewer can approve, correct, or override the checkpoint decision
  • Provenance and the flagging checkpoint result are shown in the review detail view
  • Every decision is written to the Decision log tab for audit
  • The public API is /v1/field-reviews: resolve items via POST /v1/field-reviews/:docId/:fieldKey/resolve or /v1/field-reviews/bulk-resolve
List pending fields in the field-review queue
curl -s "https://api.talonic.com/v1/field-reviews?status=pending&limit=10" \
  -H "Authorization: Bearer $TALONIC_API_KEY"

# Response (one item per held document field):
# {
#   "items": [
#     {
#       "pipeline_document_id": "9c2e4a1b-7d3f-4e58-b6a2-0f1c8d9e7a54",
#       "field_key": "total_amount",
#       "document_name": "Invoice_Beta_Corp.pdf",
#       "value": "1240.0",
#       "trigger": "gate",
#       "status": "pending"
#     }
#   ],
#   "total": 24
# }
Resolve a field review: approve, correct, or override
# Items are addressed by document ID + field key.

# Approve the extracted value:
curl -X POST https://api.talonic.com/v1/field-reviews/9c2e4a1b-7d3f-4e58-b6a2-0f1c8d9e7a54/total_amount/resolve \
  -H "Authorization: Bearer $TALONIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "action": "approve" }'

# Correct to a new value:
curl -X POST https://api.talonic.com/v1/field-reviews/9c2e4a1b-7d3f-4e58-b6a2-0f1c8d9e7a54/total_amount/resolve \
  -H "Authorization: Bearer $TALONIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "action": "correct", "corrected_value": "1240.00", "reason": "OCR dropped trailing zero" }'

# Resolve many items at once (up to 500):
curl -X POST https://api.talonic.com/v1/field-reviews/bulk-resolve \
  -H "Authorization: Bearer $TALONIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "approve",
    "items": [
      {
        "pipeline_document_id": "9c2e4a1b-7d3f-4e58-b6a2-0f1c8d9e7a54",
        "field_key": "total_amount"
      }
    ]
  }'

# Every action is written to the decision log.

The field-review queue is the human checkpoint in your pipeline. It ensures that fields a blocking checkpoint could not clear receive a person's decision before they flow downstream into the data product. Because routing is field-level, reviewers see only the specific fields that failed rather than whole records, which keeps the queue focused. The Decision log preserves the full history of who decided what, satisfying audit requirements without a separate tracking system.

Two endpoints help a reviewer work the queue efficiently at scale. GET /v1/field-reviews/triage returns the queue's shape rather than its items — a classification-backed breakdown by reason, field, document, assignee, and tag, each group carrying a per-group reason mix — so a dashboard can show which fields are mostly safe to bulk-approve versus which need a careful look. GET /v1/field-reviews/value-clusters groups the held items by their current value: when a field is held across many documents with the same value, those items form one cluster you can review once and approve together with POST /v1/field-reviews/bulk-resolve. Together they turn a long flat queue into a prioritized, batch-resolvable worklist.

The legacy POST /v1/review/:id/approve and /reject endpoints and the result.approved / result.rejected signal model are superseded. The central field-review queue uses POST /v1/field-reviews/:docId/:fieldKey/resolve with an { action } body of approve, correct, or override. If you must call the older review surface, the correct shape is POST /v1/review/:id/action with an { action } body.

Frequently asked questions

Where is the review queue?+
At /review, the single review surface. It has a Queues tab with one queue per data product and a Decision log tab. Fields reach a queue by failing a blocking validation checkpoint configured with on_block = review_queue.
What actions can I take on a queued field?+
Approve the extracted value, correct it to a new value, or override the checkpoint decision. The public API exposes these through POST /v1/field-reviews/:docId/:fieldKey/resolve with an action of approve, correct, or override (plus /v1/field-reviews/bulk-resolve for up to 500 items at once). Every action is recorded in the Decision log.
Which review API endpoint should I use?+
Use POST /v1/field-reviews/:docId/:fieldKey/resolve with an action of approve, correct, or override. The legacy /v1/review/:id/approve and /reject endpoints are superseded. If you must call the older review surface, the correct shape is POST /v1/review/:id/action with an { action } body, not separate /approve and /reject paths.
Is review per record or per field?+
Per field. A blocking checkpoint routes only the fields that failed, so reviewers resolve individual fields rather than whole records. Passing fields continue downstream without entering the queue.