---
title: "Get the device's most recent jobs"
method: GET
path: "/jobs"
tags: ["Jobs"]
---

# Get the device's most recent jobs

`GET /jobs`

## Request

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

Returns up to 3 device jobs, sorted for display in the popup.
For the `ready` status, the client computes the auto-deletion time as `status_since + 1h`.

## Headers

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

## Response `200`

Job list

- object
  - `items` JobResource[], required
    - `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
- `403`: Device blocked
- `409`: Replay detected (nonce already used)
- `429`: Device or IP limits exceeded

---

[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)
