---
title: "Read a prepared upload handoff"
method: GET
path: "/api/document-handoffs/{ticket}"
---

# Read a prepared upload handoff

`GET /api/document-handoffs/{ticket}`

## Request

- Base URL: `https://postedly.com`
- URL: `https://postedly.com/api/document-handoffs/{ticket}`
- Auth: none required

## Response `200`

Handoff state; document is present after completion.

- DocumentHandoff
  - `documentRequestId` string, uuid, required
  - `service` string, required: Original target service. An existing upload request can retain a service no longer offered; no new upload is accepted for a withdrawn service.
  - `filename` string, nullable
  - `status` 'awaiting_upload' | 'uploading' | 'complete' | 'expired', required
  - `expiresAt` string, date-time, required
  - `document` Document
    - `id` string, uuid, required: Use this value as documentId in a quote; the person does not need to copy it.
    - `name` string, required
    - `pages` integer, required: Inspected page count; images count as one. Upload PDFs allow up to 50 pages; service-specific quote limits can be lower.
    - `bytes` integer, required
    - `sha256` string, required: Server-computed SHA-256 of the stored raw file bytes.
    - `contentType` 'application/pdf' | 'image/jpeg' | 'image/png', required: Detected media type, not a trusted client declaration.
    - `previewUrl` string, uri-reference, required: Private preview. Standard document URLs require the same owner’s bearer token; capability-scoped handoff URLs require their unexpired ticket. Resolve relative URLs against this API origin. Never make the file public to show a preview.

## Other responses

- `404`: Invalid ticket
- `410`: Expired ticket

---

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