---
title: "Get presigned URL for workpaper PDF by storage key"
method: GET
path: "/internal/api/clients/{client_id}/workpaper/pdf"
tags: ["CLIENT", "Workpaper"]
---

# Get presigned URL for workpaper PDF by storage key

`GET /internal/api/clients/{client_id}/workpaper/pdf`

## Request

- Base URL: `https://api.signalshq.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.signalshq.io/internal/api/clients/{client_id}/workpaper/pdf`
- Auth: OAuth 2
  - Password
  - Token URL: `/auth/login`

Return a short-lived presigned URL for a workpaper PDF. Pass storage_key from GET workpaper (workpaper_pdf_storage_key for full PDF, or forms[].workpaper_pdf_storage_key for per-form). Client from path must match the key (workpaper-artifacts/client-{client_id}/...).

## Path parameters

- `client_id` string, uuid, required: Client ID

## Query parameters

- `storage_key` string, required: Storage key from workpaper response (full or per-form PDF)

## Response `200`

Successful Response

- WorkpaperPdfUrlResponse: Presigned URL for workpaper PDF (full or per-form). Frontend opens URL in new tab or uses for download.
  - `url` string, required: Presigned URL to access the PDF (short-lived).
  - `filename` string, required: Suggested filename for download (e.g. 2025_workpaper.pdf).

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/signalshq/apis/signals-api.md) - [All operations](https://skmtc.dev/signalshq/apis/signals-api/llms.txt) - [OpenAPI document](https://skmtc.dev/signalshq/apis/signals-api/revisions/2c22af3b5576?raw)
