---
title: "Generate presigned URL for file download"
method: GET
path: "/storage/presigned-url"
tags: ["Storage"]
---

# Generate presigned URL for file download

`GET /storage/presigned-url`

Creates a time-limited presigned URL (1 hour expiry) for direct file download from GCS

## Query parameters

- `filePath` string, required

## Headers

- `tenant-id` string, required

## Response `200`

Presigned URL generated successfully

- PresignedUrlResponse
  - `presignedUrl` string — Presigned URL for downloading the file
  - `expiresInHours` integer — Number of hours until the URL expires
  - `expiresAtTimestamp` integer — Unix timestamp when the URL expires

## Other responses

- `400` — Bad Request - Invalid file path
- `401` — Unauthorized - Authentication required
- `404` — File not found
- `500` — Internal Server Error

---

[API](https://skmtc.net/certifyos/apis/certify-api-layer.md) · [All operations](https://skmtc.net/certifyos/apis/certify-api-layer/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/certifyos/certify-api-layer/revisions/3d27e9019c7b/schema)
