Correct Fields
Fix wrong extraction values with PATCH /v1/extractions/:id/data. Send a map of field names to corrected values; each field is locked at confidence 1.0.
The Correct Fields endpoint, PATCH /v1/extractions/:id/data, submits corrections to specific fields in a completed extraction. The request body is a flat JSON object mapping field names to their corrected values. Corrected fields are locked at confidence 1.0 and will not be overwritten by future re-extractions, so use this to fix extraction errors programmatically.
Only the fields you include in the body change; all other extracted values remain untouched. A field name that does not exist on the extraction is added as a new locked field rather than rejected — useful for filling in a value the extraction missed entirely, but it also means a typo in a field name silently creates a new field instead of correcting the intended one. Match the keys exactly as they appear in the data object of GET /v1/extractions/:id.
The response returns the full updated extraction, so you can verify the applied values, the recalculated confidence, and the updated locked_fields array in one round trip. Each correction is timestamped internally, and value types are preserved: send 14500.00 as a JSON number to keep the field numeric, since a quoted "14500.00" stores a string. This endpoint requires write scope; POST /v1/extractions/:id/correct is an exact alias — same body, same behavior, same response.
Corrections propagate to every subsequent read: the data endpoint and its CSV export return the corrected values, and the recalculated confidence.overall reflects the 1.0 scores of the locked fields. This makes the endpoint a good target for a human-in-the-loop review UI — read the extraction, present low-confidence fields for review, and PATCH the confirmed values back so downstream consumers always see the vetted data.
/v1/extractions/:id/dataRequest body
{
"vendor_name": "Acme Corporation Ltd.",
"total_amount": 14500.00
}Body parameters
curl
curl -s -X PATCH https://api.talonic.com/v1/extractions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/data \
-H "Authorization: Bearer tlnc_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "total_amount": 14500.00 }'Response
Response fields
written when the corrections were written to the typed cell store, not_migrated when the document predates it and only the extraction record was updated.[{ field, reason }] for fields the request did not overwrite. reason is review_authority (a reviewer decision owns the cell) or pending_approval (the cell is waiting for review).The response is an ExtractionCorrectionResponse: the full updated extraction plus three fields that report what actually changed. Check cells_skipped after every correction. A field listed there was not overwritten because a human review decision owns the cell or the cell is still waiting for review; resolve it through Review instead of retrying the correction. cells_written lists the fields that did land, and value_plane says whether they reached the typed cell store.
Response
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "complete",
"document": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"filename": "invoice-0847.pdf",
"pages": 2,
"type_detected": "invoice"
},
"data": {
"vendor_name": "Acme Corp",
"invoice_number": "INV-2026-0847",
"total_amount": 14500.00,
"due_date": "2026-03-15"
},
"confidence": {
"overall": 0.97,
"fields": {
"vendor_name": 0.99,
"invoice_number": 0.98,
"total_amount": 1.0,
"due_date": 0.91
}
},
"locked_fields": ["total_amount"],
"processing": {
"duration_ms": 3420,
"pages_processed": 2,
"region": "eu-west"
},
"created_at": "2026-07-14T10:33:12.000Z",
"links": {
"self": "/v1/extractions/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"data": "/v1/extractions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/data",
"document": "/v1/documents/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"dashboard": "https://app.talonic.com/documents/a1b2c3d4-e5f6-7890-abcd-ef1234567890"
},
"value_plane": "written",
"cells_written": ["total_amount"],
"cells_skipped": []
}Errors
Error responses
Frequently asked questions
How do I correct a wrong extraction value via the API?+
Can I correct multiple fields in a single request?+
What happens to the confidence score of a corrected field?+
locked_fields array. The overall confidence score is recalculated to reflect the correction.