---
title: "Generate a signed download URL for a file"
method: GET
path: "/api/storage/{project_id}/download"
tags: ["Storage"]
---

# Generate a signed download URL for a file

`GET /api/storage/{project_id}/download`

## Request

- Base URL: `https://core.blink.new`
- URL: `https://core.blink.new/api/storage/{project_id}/download`
- Auth: HTTP bearer

Returns a 15-minute signed URL that forces a browser
download via `Content-Disposition: attachment`. The signed URL is self-contained
and requires no additional authentication to access. Use the `filename` query
parameter to override the name shown to the user during download.

## Path parameters

- `project_id` string, required

## Query parameters

- `path` string, required
- `filename` string

## Response `200`

Signed download URL generated successfully

- object
  - `data` object
    - `downloadUrl` string, uri: Signed URL valid for 15 minutes that triggers a file download
    - `filename` string: Filename used in the Content-Disposition attachment header
    - `contentType` string: Detected MIME type of the file
    - `size` integer: File size in bytes
  - `error` unknown

## Other responses

- `400`: Missing required path parameter or project ID
- `401`: Authentication required or invalid API key
- `404`: File not found at the specified path
- `500`: Storage error or failed to generate signed URL

---

[API](https://skmtc.dev/blink/apis/blink-apis.md) - [All operations](https://skmtc.dev/blink/apis/blink-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/blink/apis/blink-apis/revisions/4c59c706078e?raw)
