---
title: "Get Permit Packet File"
method: GET
path: "/permit-runs/{run_id}/packet/file"
tags: ["operator-runs"]
---

# Get Permit Packet File

`GET /permit-runs/{run_id}/packet/file`

Stream one packet PDF through the API (latest edited version wins).

The dashboard's pdf.js viewer fetches bytes with the normal auth headers;
streaming via the API rides the existing CORS setup instead of requiring a
CORS policy on the S3 bucket. The editable copy is served with Pilot's
ReadOnly widget flags cleared so the dashboard's Form fields mode can type.

## Path parameters

- `run_id` string, required

## Query parameters

- `kind` 'flattened' | 'editable'

## Response `200`

Successful Response

- unknown

## Other responses

- `404` — Not found
- `422` — Validation Error

---

[API](https://skmtc.dev/noso/apis/crucible-backend-api.md) · [All operations](https://skmtc.dev/noso/apis/crucible-backend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/noso/apis/crucible-backend-api/revisions/d1993647e543?raw)
