> ## Documentation Index
> Fetch the complete documentation index at: https://docs.craftkit.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Download a render (private)

> GET /v1/embed/renders/:id/download — stream a render's PDF from private storage with your project key.

<Info>**GET** `https://api.craftkit.dev/v1/embed/renders/:id/download`</Info>

Streams the rendered PDF bytes from **private** storage. Despite the `embed/` namespace, this
endpoint authenticates with your `ck_live_` key **as the partner secret** — it does **not** require
an embed session JWT. Use it when you do not want to rely on the public-bucket `downloadUrl`.

<Warning>
  The sibling metadata endpoint `GET /v1/embed/renders/:id` **does** require an embed session JWT
  with strict session ownership and is not reachable with a partner key. For headless metadata,
  poll [`GET /v1/renders/:id`](/api-reference/get-render).
</Warning>

## Authorization

<ParamField header="Authorization" type="string" required>
  `Bearer ck_live_…` — accepted as the partner secret for the render's project.
</ParamField>

## Path parameters

<ParamField path="id" type="string" required>The render id.</ParamField>

## Response

`200` with `Content-Type: application/pdf` and the PDF bytes (`Content-Disposition: inline`,
`Cache-Control: private, max-age=3600`).

| Status | code                  | Meaning                                                  |
| ------ | --------------------- | -------------------------------------------------------- |
| 401    | `invalid_credentials` | Missing/invalid partner key.                             |
| 404    | —                     | Render not found in this key's project, or no asset yet. |

```bash cURL theme={null}
curl https://api.craftkit.dev/v1/embed/renders/$RENDER_ID/download \
  -H "Authorization: Bearer $CRAFTKIT_API_KEY" \
  --output handover.pdf
```
