---
title: "Get a job by id (EP-031-T6)"
method: GET
path: "/jobs/{jobId}"
tags: ["Jobs"]
---

# Get a job by id (EP-031-T6)

`GET /jobs/{jobId}`

## Request

- Base URL: `https://pdf2md.dev`
- URL: `https://pdf2md.dev/jobs/{jobId}`
- Auth: HTTP bearer

Per-job status lookup by id, device-signed (same ownership check as the v1
list). Used to re-query a job that has aged out of the recent list.

## Path parameters

- `jobId` string, uuid, required

## Headers

- `X-Timestamp` integer, required
- `X-Nonce` string, required
- `X-Body-SHA256` string, required
- `X-Signature` string, required

## Response `200`

The job resource

- JobResource
  - `job_id` string, uuid, required
  - `status` 'queued' | 'processing' | 'ready' | 'error' | 'canceled' | 'deleted', required: Job status
  - `converter_code` string, required
  - `status_since` string, date-time, required: Time of entry into the current status (UTC)
  - `priority` integer, required: A lower number — higher priority. v2 (EP-023, §7.7): a band scale, `min` is no longer 4 — the client treats the value as opaque (timers are computed from `status_since`/`ready_at`, not from priority).
  - `priority_assigned_at` string, date-time, required: When priority was assigned/lowered
  - `error_message` string, nullable
  - `error_code` string, nullable: Stable machine error code for a failed job (EP-031). Additive — absent on success and on older records. Clients localize by this code; the human error_message is a fallback.
  - `file_name` string, required
  - `output_size` integer, nullable: Markdown size (bytes), only for `ready`
  - `download_url` string, uri, nullable: Populated for `ready`
  - `pages` integer, nullable: Number of pages in the source PDF (EP-018). An additive field — absent on the old backend/old jobs; clients should ignore it if missing.
  - `truncated` boolean: `true` — the result is partial: conversion reached the soft time budget and a disclaimer was appended to the end of the Markdown (EP-018). Additive, backward-compatible: absence/`false` = full result.

## Other responses

- `401`: Invalid or expired device_token / request signature
- `404`: Job not found

---

[API](https://skmtc.dev/pdf2md/apis/pdf-to-markdown-api-facade.md) · [All operations](https://skmtc.dev/pdf2md/apis/pdf-to-markdown-api-facade/llms.txt) · [OpenAPI document](https://skmtc.dev/pdf2md/apis/pdf-to-markdown-api-facade/revisions/4636782fb8b6?raw)
