---
title: "Presign Files"
method: POST
path: "/api/workspace/storage/presign"
tags: ["workspace-storage", "workspace-storage"]
---

# Presign Files

`POST /api/workspace/storage/presign`

## Request

- Base URL: `https://api.dialogbrain.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.dialogbrain.com/api/workspace/storage/presign`
- Auth: none declared

Short-lived download URLs for files this workspace owns.

Ownership is checked here, per file, against `workspace_id` — the URL itself
is a bearer token for one object, so the boundary has to be enforced before
it is minted, not after.

## Request body

- PresignRequest
  - `file_ids` integer[], required
  - `expires_in` integer

## Response `200`

Successful Response

- PresignedFile[]
  - `file_id` integer, required
  - `url` string, nullable, required
  - `bucket` string, nullable, required
  - `key` string, nullable, required
  - `mime_type` string, nullable, required
  - `byte_size` integer, nullable, required
  - `error` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway.md) · [All operations](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway/revisions/77bef09a9209?raw)
