---
title: "Get Job Status"
method: GET
path: "/api/v1/jobs/{job_id}"
tags: ["jobs"]
---

# Get Job Status

`GET /api/v1/jobs/{job_id}`

## Request

- Base URL: `http://localhost:8000`
- URL: `http://localhost:8000/api/v1/jobs/{job_id}`
- Auth: none declared

Get status of a specific job.

Args:
    job_id: Job identifier (UUID)
    ctx: Application context with user and session
    job_adapter: Job adapter dependency
    asset_provider: Asset provider dependency

Returns:
    StandardResponse: Job status details

Raises:
    NotFoundError: If job not found or access denied

## Path parameters

- `job_id` string, uuid, required

## Headers

- `Authorization` string

## Response `200`

Successful Response

- JobDetailEnvelope: Typed ``StandardResponse`` envelope for the job detail endpoint.
  - `success` boolean, required
  - `data` JobDetailResponse: Response model for the single-job detail endpoint (``get_job_status``). Mirrors the payload ``get_job_status`` returns (the DAL row minus internal IDs, plus ``asset_uuid`` and the ``job_type`` alias the DAL adds). Unlike ``JobStatusResponse``, ``status`` is NOT normalized here (the detail endpoint returns the raw DB status), and ``result_data`` is included (the frontend reads it for completion / skip detection). Declaring it as a ``response_model`` lands the schema in the spec so the frontend can alias it (TECH-1003 / TECH-998 ``core-dsq``). ``extra="allow"`` is deliberate: the DAL builds this dict, so any field it adds in the future passes through unchanged instead of being silently dropped by response-model serialization. Only the fields below are typed for the frontend; anything else is preserved verbatim.
    - `job_id` string, required: Unique job identifier
    - `workflow_name` string, required: Name of the workflow
    - `status` string, required: Raw job status (not normalized)
    - `job_type` string, nullable: Workflow name alias
    - `priority` string: Job priority level
    - `worker_id` string, nullable: Worker that ran the job
    - `progress_percent` integer: Job progress percentage
    - `created_at` string, date-time, required: Job creation timestamp
    - `started_at` string, date-time, nullable: Job start timestamp
    - `completed_at` string, date-time, nullable: Job completion timestamp
    - `estimated_duration` integer, nullable: Estimated duration in seconds
    - `context` object, nullable: Sanitized job context
    - `filters` object, nullable: Job filters
    - `result_data` object, nullable: Raw job result payload
    - `result` object, nullable: Parsed job result payload
    - `error_message` string, nullable: Error message if the job failed
    - `created_by` string, nullable: Process/user identifier that created the job
    - `asset_uuid` string, nullable: Public UUID of the asset this job processed
  - `message` string, nullable
  - `error` string, nullable
  - `meta` object, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/anomalyarmor/apis/anomalyarmor-api.md) · [All operations](https://skmtc.dev/anomalyarmor/apis/anomalyarmor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/anomalyarmor/apis/anomalyarmor-api/revisions/51c755fb5d0b?raw)
