---
title: "Get Document Status"
method: GET
path: "/v1/document/status/{upload_id}"
tags: ["v1", "Document"]
---

# Get Document Status

`GET /v1/document/status/{upload_id}`

Get processing status for an uploaded document.

Pass ``?timeline=true`` to include step-by-step processing detail without
changing the default flat status fields.

## Path parameters

- `upload_id` string, required

## Query parameters

- `timeline` boolean — When true, include a `timeline` object with ordered processing steps, per-step status, and timing. Default response shape is unchanged.

## Response `200`

Document processing status. Include `?timeline=true` for step detail.

- DocumentStatusResponse — GET /v1/document/status/{upload_id} response. Pass ?timeline=true to include timeline.
  - `upload_id` string, required — Document upload identifier
  - `status` string, required — Current processing status
  - `progress` number, nullable — Overall progress from 0.0 to 1.0
  - `current_page` integer, nullable — Current page being processed
  - `total_pages` integer, nullable — Total pages in the document
  - `error` string, nullable — Customer-safe error message when processing failed
  - `timestamp` string, date-time, nullable — Timestamp of the latest status update
  - `page_id` string, nullable — User-facing document Post ID, when available
  - `workflow_type` string, nullable — Processing backend type
  - `message` string, nullable — Additional status message
  - `timeline` DocumentStatusTimelineDetail — Optional step-by-step detail included when GET /document/status/{id}?timeline=true.
    - `steps` DocumentTimelineStep[] — Ordered processing steps with per-step status and timing
      - `id` string, required — Stable step identifier for UI rendering
      - `label` string, required — Customer-facing step title
      - `description` string, required — Customer-facing step description
      - `status` 'pending' | 'in_progress' | 'completed' | 'failed' | 'skipped', required
      - `progress` number, nullable — Overall pipeline progress when this step was last updated (0.0-1.0)
      - `started_at` string, date-time, nullable — When this step started
      - `completed_at` string, date-time, nullable — When this step completed
      - `duration_ms` integer, nullable — Step duration in milliseconds
      - `total_pages` integer, nullable — Total pages processed, when known
      - `page_id` string, nullable — User-facing document Post ID, when available
      - `error` string, nullable — Customer-safe error message for failed steps
    - `total_elapsed_ms` integer, nullable — Total elapsed processing time in milliseconds
    - `updated_at` string, date-time, nullable — Timestamp of the latest timeline update

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/papr-ai/apis/papr-memory-api.md) · [All operations](https://skmtc.net/papr-ai/apis/papr-memory-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/papr-ai/papr-memory-api/versions/b553be9aad37/schema)
