Reopen a completed extraction review
Take a sign-off back so the run returns to pending and its fields can be reviewed again.
Only the reviewer who completed the run may reopen it. Both events stay in the log, so the
trail shows the run was signed off and then reopened, while the review status and the
lineage decision follow the live completion. Uses the same optimistic version check as
field confirmations.
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 <= 128Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/jobs/opj_V1StGXR8_Z5jdHi6B-myT/review/reopen" \ -H "Authorization: Bearer $OPENPARSER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "expected_version": 0 }'{ "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": "malformed_request", "message": "multipart field `request` is not valid JSON", "request_id": "req_01h2example", "retryable": false }}{ "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": "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 }}Approve or reject an extraction review POST
Finalize a pending review as approved or rejected. A completed review is frozen: field confirmations are rejected until it is reopened. Uses the same optimistic version check as field confirmations.
Get a parse job result representation GET
Return the selected parse wire body for a tenant-owned succeeded parse job. `format` defaults to the job's original `output_format`. Fresh dual-artifact parses can serve either `openparser@1` or `raw` from object storage without re-running HPS or charging pages. Historical jobs only serve the representation already present in `result_json`; unavailable alternates return `422 result_format_unavailable` with guidance. Non-terminal jobs return `409 job_not_terminal`. Playground tokens (`ocr:playground`) and `ocr:full` keys are both accepted.