> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ndi.nace.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a job

> GET /jobs/{job_id} — poll status and read results

Returns the current state of a job, including its full result once it has succeeded. This is the polling endpoint for every async flow, and it is **never rate-limited**.

```text theme={"dark"}
GET /jobs/{job_id}
```

## Request

<ParamField path="job_id" type="uuid" required>
  The id returned when the job was started. Jobs are tenant-scoped — an id
  belonging to another tenant returns `404`.
</ParamField>

## Response

<ResponseField name="job_id" type="uuid" />

<ResponseField name="action" type="string">
  `"parse"`, `"ground"`, or `"categorize"`.
</ResponseField>

<ResponseField name="status" type="string">
  `"pending"`, `"running"`, `"succeeded"`, or `"failed"`. The last two are
  terminal. See [Jobs](/concepts/jobs).
</ResponseField>

<ResponseField name="result" type="object | null">
  Populated only when `status` is `"succeeded"`. A tagged union on
  `result_type` — the shape is documented on each method page:
  [`parse`](/api-reference/parse#result), [`ground`](/api-reference/ground#result),
  [`categorize`](/api-reference/categorize#result). Artifact URLs inside the
  result are freshly signed on every read (valid 1 h), so re-fetching the job
  is the way to get a new download link.
</ResponseField>

<ResponseField name="error" type="object | null">
  Populated only when `status` is `"failed"`: `{ "code": "...", "message": "..." }`.
  Cancelled jobs carry `code: "cancelled"`.
</ResponseField>

<ResponseField name="created_at" type="datetime" />

<ResponseField name="started_at" type="datetime | null" />

<ResponseField name="completed_at" type="datetime | null" />

## Example

```bash theme={"dark"}
curl -s "$NDI_BASE/jobs/0c9b2c1e-8f4a-4a91-b7a5-3f2d1e0a9c8b" \
  -H "X-API-Key: $NDI_API_KEY"
```

```json Running theme={"dark"}
{
  "job_id": "0c9b2c1e-8f4a-4a91-b7a5-3f2d1e0a9c8b",
  "action": "parse",
  "status": "running",
  "result": null,
  "error": null,
  "created_at": "2026-07-12T21:04:11Z",
  "started_at": "2026-07-12T21:04:12Z",
  "completed_at": null
}
```
