GET /v1/ocr/jobs/{id}
Read an async OCR job's status (the meter-once completion read)
Task #19 specialty route (route_type: ocr). `model` is a REQUIRED query parameter (the gateway is job-stateless — the id alone cannot route); stray query params are 400 per the §3 law. Statuses pass through verbatim (queued | running | done | failed). The read that observes done meters ONCE (the payload's pages — the card CONSUMES the done payload on the first read: fetch-once, so a re-poll answers job_not_found and completion cannot double-bill; persist the payload client-side, it cannot be re-fetched); an unknown, already-consumed, or TTL-expired job answers the GATEWAY's job_not_found envelope, never the card's foreign 404 body; a failed job passes its error through and meters nothing. NOT balance-guarded — an unmetered catalog-class read (the voices law).
Parameters
Parameters for ocrJobStatus | Field | Type | Required | Description |
| id | string | yes | Path |
| model | string | yes | Query — The alias the job was created with. |
Responses
400 400
400 response fields for ocrJobStatus | Field | Type | Required | Description |
| error | object | yes | — |
401 401
401 response fields for ocrJobStatus | Field | Type | Required | Description |
| error | object | yes | — |
403 403
403 response fields for ocrJobStatus | Field | Type | Required | Description |
| error | object | yes | — |
404 404
404 response fields for ocrJobStatus | Field | Type | Required | Description |
| error | object | yes | — |
500 500
500 response fields for ocrJobStatus | Field | Type | Required | Description |
| error | object | yes | — |
502 502
502 response fields for ocrJobStatus | Field | Type | Required | Description |
| error | object | yes | — |
503 503
503 response fields for ocrJobStatus | Field | Type | Required | Description |
| error | object | yes | — |
Status codes
- 200 — The job's status payload verbatim (status + text/results/pages when done, the error object when failed).