Download retained job source bytes
Stream the retained source document for a parse or single-document extract job. Jobs without
retained source bytes return 404 source_not_available. Check has_source on GET /jobs/{id}
before calling. Playground tokens (ocr:playground) and ocr:full keys are both accepted,
matching other job read routes. Optional Range requests may return 206 partial content or
416 when the range is unsatisfiable.
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/octet-stream
application/octet-stream
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/jobs/opj_V1StGXR8_Z5jdHi6B-myT/source" \ -H "Authorization: Bearer $OPENPARSER_API_KEY""string""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": "rate_limited", "message": "request rate limit exceeded", "request_id": "req_01h2example", "retryable": true }}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.
Upload a reusable file POST
Upload bytes directly to OpenParser's Eigenpal-compatible tenant file pool. Files may be reused by later parse or extract requests through `file_id`; bytes do not pass through Vercel.