---
title: "Get a detail PDF download URL"
method: GET
path: "/v1/workspaces/{workspaceId}/downloads/pdf/{detailId}"
tags: ["Downloads"]
---

# Get a detail PDF download URL

`GET /v1/workspaces/{workspaceId}/downloads/pdf/{detailId}`

## Request

- Base URL: `https://external-api.pirros.com`
- URL: `https://external-api.pirros.com/v1/workspaces/{workspaceId}/downloads/pdf/{detailId}`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://auth.pirros.com/oauth/token`

Return a download URL for a detail's current PDF rendering. Detail PDFs are Cloudinary assets, so download_url is a public Cloudinary delivery URL and expires_at is null. Requires a detail:download filter. A cross-workspace/unmatched detail returns 404 (no existence disclosure); a non-downloadable detail returns 403 DOWNLOAD_DISABLED.

## Path parameters

- `workspaceId` string, uuid, required
- `detailId` string, uuid, required

## Response `200`

Download URL issued

- ExternalSignedDownloadResponse: A download URL for the resource. RVT and RFA return a 15-minute AWS S3 pre-signed URL with expires_at set; the detail PDF returns a Cloudinary delivery URL with expires_at null (the asset is not in S3 and the URL does not expire).
  - `response` object, required
    - `download_url` string, uri, required
    - `expires_at` string, date-time, nullable, required
    - `expanded` object, required
  - `meta` object, required
    - `request_id` string, uuid, required

## Other responses

- `400`: Invalid request (bad path param, query param, or cursor)
- `401`: Unauthorized (invalid or missing token)
- `403`: Detail is not downloadable (DOWNLOAD_DISABLED)
- `404`: Detail not found in this workspace
- `429`: Rate limit exceeded (1000 requests per hour per client)
- `503`: External API temporarily disabled by operator kill switch (service_unavailable)

---

[API](https://skmtc.dev/pirros/apis/pirros-external-api.md) - [All operations](https://skmtc.dev/pirros/apis/pirros-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pirros/apis/pirros-external-api/revisions/01c66b8d9fd1?raw)
