# Job-Status

Basis-URL `https://api.accessful.de/api/v1/upload-service`. Jede Anfrage benötigt den `X-API-Key`-Header — siehe [Authentifizierung](https://docs.accessful.de/de/authentication/).

```http
GET /job-status/{caseId}
```

**`200 OK`**

```json
{ "jobStatus": "completed", "stage": "finished", "score": 87 }
```

`score` ist die Barrierefreiheits-Qualität des Ergebnisses, **0–100** (final, sobald
`completed`). `404` wird bei unbekannter `caseId` zurückgegeben.

Die Antwort hat zwei unabhängige Felder: **`jobStatus`** ist das grobe Ergebnis —
nutze es, um zu entscheiden, wann der Job fertig ist — während **`stage`** die
feingranulare Pipeline-Phase eines laufenden Cases ist und angibt, *wo* er sich
gerade befindet.

| `jobStatus` | Bedeutung | |
| --- | --- | --- |
| `queued` | Wartet in der Warteschlange. | |
| `running` | Wird gerade verarbeitet. | |
| `completed` | Fertig — Ergebnis zum Download bereit. | Endzustand |
| `failed` | Verarbeitung fehlgeschlagen. | Endzustand |
| `analyzer_failed` | Der Analyse-Schritt ist fehlgeschlagen. | Endzustand |
| `canceled` | Der Job wurde abgebrochen. | Endzustand |
| `quota_pending` | Wartet auf eine asynchrone Kontingentprüfung. | |
| `quota_exceeded` | Abgelehnt — Vertragskontingent erschöpft. | Endzustand |

Beim Pollen: stoppe, sobald `jobStatus` einen **Endzustand** erreicht.

`stage` gibt die Pipeline-Phase an. `jobStatus: "completed"` fällt immer mit
`stage: "finished"` zusammen — dem Punkt, an dem `score` final ist.

| `stage` | Bedeutung |
| --- | --- |
| `queued` | Angenommen; wartet auf die erste Analyse. |
| `analyzing` | Die initiale Barrierefreiheits-Analyse läuft. |
| `resolving` | Die KI-Remediation läuft. |
| `revalidating` | Die remediierte Datei wird erneut analysiert; `score` wird neu berechnet. |
| `finished` | Fertig — `score` entspricht der finalen remediierten Datei. |
| `failed` | Verarbeitung wegen eines Fehlers gestoppt. |