---
title: "Upload the PDF bytes (signed URL from POST /v1/uploads)"
method: PUT
path: "/v1/uploads/{id}/content"
---

# Upload the PDF bytes (signed URL from POST /v1/uploads)

`PUT /v1/uploads/{id}/content`

## Request

- Base URL: `https://themassprint.com`
- URL: `https://themassprint.com/v1/uploads/{id}/content`
- Auth: none required

## Path parameters

- `id` string, required

## Query parameters

- `exp` string, required
- `sig` string, required

## Response `200`

Stored and printable

- UploadValidation
  - `upload_id` string
  - `validation` Validation
    - `printable` boolean
    - `page_count` integer
    - `trim` object
      - `width_mm` number
      - `height_mm` number
      - `name` string
    - `size_bytes` integer
    - `errors` Issue[]
      - `code` string
      - `message` string
      - `resolution` string
    - `warnings` Issue[]
      - `code` string
      - `message` string
      - `resolution` string
    - `sku` string: SKU whose rules the file best matches; top-level errors/warnings are for this SKU.
    - `by_sku` object: Per-SKU verdict (the format is not declared at upload time, so the file is checked against every SKU).

## Other responses

- `403`: Bad/expired signature
- `415`: Not a PDF — rejected before storage
- `422`: Stored but has blocking validation errors

---

[API](https://skmtc.dev/themassprint/apis/massprint-api.md) · [All operations](https://skmtc.dev/themassprint/apis/massprint-api/llms.txt) · [OpenAPI document](https://skmtc.dev/themassprint/apis/massprint-api/revisions/50555aeed826?raw)
