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

# Get Import Job

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

One import's durable progress — what a reopened dialog reads.

Scoped to the submitting user rather than to the project: the job row is the
record of *this user's* run, and a 404 on someone else's job leaks nothing
about whether it exists.

## Path parameters

- `job_id` string, uuid, required

## Response `200`

Successful Response

- ImportJobResponse — One background import as the client polls and renders it. The field list lives on :class:`ImportJobSnapshot` so this and the pushed ``import_progress`` frame cannot describe the same row differently.
  - `id` string, uuid, required
  - `project_id` string, uuid, required
  - `status` 'pending' | 'running' | 'cancelling' | 'completed' | 'failed' — Lifecycle of one background import. - PENDING: row inserted, workflow enqueued, no chunk resolved yet - RUNNING: the workflow claimed the job and is resolving chunks - CANCELLING: the user asked to stop; the workflow observes this at the next chunk boundary and falls through to a normal finalize. Cancel is cooperative, so this is an in-flight state, not a terminal one — the partial commit still has to happen. - COMPLETED: finalized, whether every row resolved or only some - FAILED: finalized with nothing committed, or the workflow raised
  - `total_rows` integer
  - `resolved_rows` integer
  - `committed_rows` integer
  - `shortfall_rows` integer
  - `failure_reason` string, nullable
  - `created_at` string, date-time, nullable
  - `updated_at` string, date-time, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/maia-analytics/apis/maia-api.md) · [All operations](https://skmtc.net/maia-analytics/apis/maia-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/maia-analytics/maia-api/revisions/fff2cd2dfbac/schema)
