Jobs

Get an extraction review

GET
/jobs/{id}/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
AuthorizationBearer <token>

Existing Eigenpal API key presented as a bearer token.

In: header

Path Parameters

id*string

Durable OCR job identifier (opj_…).

Match^opj_[A-Za-z0-9_-]+$
Lengthlength <= 128

Response 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.