Get an extraction review
Return the immutable machine output beside the current corrected output and append-only
review events. A succeeded extraction with no confirmations returns a synthesized pending review
at version 0. Cross-tenant and unknown jobs return 404.
Authorization
bearerAuth Existing Eigenpal API key presented as a bearer token.
In: header
Path Parameters
Durable OCR job identifier (opj_…).
^opj_[A-Za-z0-9_-]+$length <= 128Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/jobs/opj_V1StGXR8_Z5jdHi6B-myT/review" \ -H "Authorization: Bearer $OPENPARSER_API_KEY"{ "job_id": "opj_V1StGXR8_Z5jdHi6B-myT", "status": "pending", "machine_output": null, "corrected_output": null, "lineage": { "format": "lineage@1", "id": "string", "profiles": [ "string" ], "entities": {}, "activities": {}, "agents": {}, "derivations": [], "relations": [], "outputs": [], "attributes": { "property1": null, "property2": null } }, "version": 0, "events": [ { "version": 1, "actor_id": "string", "created_at": "2019-08-24T14:15:22Z", "type": "field_confirmed", "path": "string", "previous_value": null, "value": null, "note": "string" } ], "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "completed_at": "2019-08-24T14:15:22Z", "reviewed_by_actor_id": "string", "viewer_actor_id": "string"}{ "error": { "code": "unauthorized", "message": "invalid API key", "request_id": "req_01h2example", "retryable": false }}{ "error": { "code": "forbidden", "message": "API key lacks required scope", "request_id": "req_01h2example", "retryable": false }}{ "error": { "code": "job_not_found", "message": "job not found", "request_id": "req_01h2example", "retryable": false }}{ "error": { "code": "string", "message": "string", "request_id": "string", "retryable": true, "details": { "property1": null, "property2": null } }}{ "error": { "code": "rate_limited", "message": "request rate limit exceeded", "request_id": "req_01h2example", "retryable": true }}Get job status and result GET
Tenant-scoped durable job read. Jobs belonging to another tenant return `404`. Batch jobs include cursor-paginated child summaries. Playground tokens (`ocr:playground`) and `ocr:full` keys are both accepted. Successful parse jobs return the originally requested `output_format` in `result`; use `GET /jobs/{id}/result?format=` to select an alternate stored representation without re-running OCR.
Confirm extraction field values PATCH
Confirm that a field should say a given value, signed by the caller, without mutating the machine result. `expected_version` provides optimistic concurrency; stale writes return `409`. Every confirmation and retraction appends an actor- and timestamp-attributed event. A confirmation whose value matches what extraction produced is a plain sign-off; one that differs also corrects the field. There is no separate approval: who stands behind a value is derived from live confirmations. Retractions are applied first, then confirmations. A retraction peels the caller's own current tip on that path and restores the value the confirmation replaced. Two retractions of the same path undo two confirmations, in order. A retraction cannot be combined with a confirmation on the same or overlapping path. The tip is not retractable when someone else made it, or when a later overlapping confirmation named a different value. A co-signature of the same value becomes the tip, so only that co-signer can take it back. Completing the review still freezes everything. Provide at least one confirmation or retraction.