Job status
Base URL https://api.accessful.de/api/v1/upload-service. Every request needs the X-API-Key header — see Authentication.
GET /job-status/{caseId}200 OK — a finished case:
{ "jobStatus": "completed", "stage": "finished", "score": 87 }score is the accessibility quality of the result, 0–100 (final once
completed). 404 is returned for an unknown caseId.
jobStatus |
Meaning | |
|---|---|---|
queued |
Waiting in the queue. | |
running |
Currently processing. | |
completed |
Finished — result ready to download. | terminal |
failed |
Processing failed. | terminal |
analyzer_failed |
The accessibility analysis step failed. | terminal |
canceled |
The job was canceled. | terminal |
quota_pending |
Awaiting an asynchronous quota check. | |
quota_exceeded |
Rejected — contract quota exhausted. | terminal |
When polling, stop as soon as you see a terminal state.
Processing stage
Section titled “Processing stage”Alongside jobStatus, every response carries a stage field — the fine-grained
pipeline phase, orthogonal to the coarse status. Use it to show progress beyond a
plain “running”: the long AI-remediation phase is distinguishable from analysis.
stage |
Meaning |
|---|---|
queued |
Accepted, waiting for the first analysis to start. |
analyzing |
Initial analysis of the uploaded file is running. |
resolving |
AI remediation of the file is running. |
revalidating |
Re-analysis of the remediated file is running. |
finished |
Processing finished; score reflects the final file. |
failed |
Processing stopped on an unrecoverable error. |
Queue position
Section titled “Queue position”While a case is queued, the response also tells you where it sits in the
analysis queue — the same live “waiting position” the web UI shows — so you can
surface a meaningful “7 of 23, ~5 min” instead of a static “queued”.
200 OK — a case still waiting:
{ "jobStatus": "queued", "stage": "queued", "score": 0, "queuePosition": 7, "queueTotal": 23, "estimatedWaitSeconds": 300}| Field | Type | Notes |
|---|---|---|
queuePosition |
integer | 1-based rank in the queue (1 = next to be processed). |
queueTotal |
integer | Total number of cases currently waiting (the queue length). |
estimatedWaitSeconds |
integer | Best-effort wait estimate in seconds, derived from queue depth and analyzer throughput. May be absent if no estimate is available. |
The position is a best-effort live snapshot recomputed on every request: it only
ever decreases as cases ahead are processed, and a single dequeue shifts everyone
behind it. For a push-based alternative, register the case.queued
webhook to receive the starting position the moment a case is
accepted.