Jobs

Get a parse job result representation

GET
/jobs/{id}/result

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.

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

Query Parameters

format?string

Parse representation to return. Defaults to the job's original output_format when omitted. Fresh parses store both representations as immutable object-store artifacts; historical jobs only expose the representation already present in result_json. Requesting an unavailable alternate returns 422 and never re-runs OCR.

Value in

  • "openparser@1"
  • "raw"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/jobs/opj_V1StGXR8_Z5jdHi6B-myT/result" \  -H "Authorization: Bearer $OPENPARSER_API_KEY"
{  "output_format": "openparser@1",  "document_id": "string",  "provenance": {    "provider": "string",    "model": "string",    "version": "string",    "operation": "string"  },  "text": "string",  "markdown": "string",  "pages": [    {      "number": 1,      "source_page_number": 1,      "width": 1,      "height": 1,      "unit": "pixel",      "rotation_degrees": 0,      "languages": [],      "confidence": {        "score": 0,        "scope": "detection",        "calibrated": false,        "source_value": 0,        "source_scale": "zero_to_one"      },      "quality": {        "score": {          "score": 0,          "scope": "detection",          "calibrated": false,          "source_value": 0,          "source_scale": "zero_to_one"        },        "defects": [],        "metrics": []      },      "image_asset_id": "string",      "element_ids": [],      "reading_order": []    }  ],  "elements": [],  "text_annotations": [],  "relations": [],  "assets": []}
{  "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": "job_not_terminal",    "message": "parse job is not terminal yet",    "request_id": "req_01h2example",    "retryable": true,    "details": {      "status": "running"    }  }}

{  "error": {    "code": "result_format_unavailable",    "message": "requested parse representation is not available for this job",    "request_id": "req_01h2example",    "retryable": false,    "details": {      "requested_format": "raw",      "available_format": "openparser@1",      "guidance": "Re-admit a parse with dual artifacts, or request the available format."    }  }}

{  "error": {    "code": "rate_limited",    "message": "request rate limit exceeded",    "request_id": "req_01h2example",    "retryable": true  }}

{  "error": {    "code": "provider_indeterminate",    "message": "job outcome indeterminate",    "request_id": "req_01h2example",    "retryable": true  }}