Documentation / Retrieve a result

Retrieve a result

Read an existing job without repeating extraction or consuming another unit.

GET https://ocr.ecostudios.dev/api/v3/ine/{request_id}

Send the API key belonging to the company that created the job. An Idempotency-Key and image files are not needed for GET.

curl --max-time 90 --include \
  "https://ocr.ecostudios.dev/api/v3/ine/$REQUEST_ID" \
  -H "X-API-Key: $INE_API_KEY" \
  -H 'Accept: application/json' \
  -H 'User-Agent: ine-api-backend-example/1.0'

This command may print personal data. Use it only in a private environment.

Polling

When a response is 202, wait for Retry-After before another GET. The normal processing interval is two seconds. Set a bounded wait in your application, then let the user check later if the job remains in progress.

Validate that status_url is exactly /api/v3/ine/{request_id} for the UUID in the response. Build the GET URL on your configured API origin. Never forward the API key to an arbitrary status URL or follow a redirect automatically.

GET reads the current job state. It does not restart extraction, resume interrupted work or consume another reading unit. You can retrieve an existing job even when the company's new-job or monthly allowance is exhausted.

Status handling

HTTPMeaning
200The reading succeeded. Review and consume data.
202The job is still processing. Poll after Retry-After.
401Authentication is missing, invalid or revoked.
404The job is not available to this company, or the identifier is unknown.
409Submission could not be confirmed. Follow error.action; do not create a retry loop.
410The result's access window has expired.
422The reserved job failed. This is terminal; follow error.action.
503The result or service could not be accessed. Inspect the structured error.

Not every error's request_id represents a reserved job. For example, a validation rejection can have a support identifier without a retrievable result.

Expiry

Current results are accessible for 23 hours from reservation. expires_at states the deadline. Save needed data in your own system before then. An expired key replay does not create a fresh reading or extend retention.

A historical compatible result can have expires_at: null; that does not promise indefinite access. Jobs are shared across API versions, so you can retrieve an existing job through the English /api/v3 route without another extraction.