---
title: "Generate a signed S3 URL"
method: GET
path: "/api/v1/s3/signed-url"
tags: ["main", "s3"]
---

# Generate a signed S3 URL

`GET /api/v1/s3/signed-url`

## Request

- Base URL: `https://app.dograh.com`
- URL: `https://app.dograh.com/api/v1/s3/signed-url`
- Auth: none declared

Return a short-lived signed URL for a file stored on S3 / MinIO.

Access Control:
* Known org-scoped keys (for example ``campaigns/{org_id}/...`` and
  ``recordings/{org_id}/{recording_id}/...``) are authorized by matching the
  org_id against the requesting user's organization.
* Legacy keys (``recordings/{run_id}.wav``, ``transcripts/{run_id}.txt``)
  are authorized via the workflow run they belong to.
* Superusers can request any key.

## Query parameters

- `key` string, required: S3 object key
- `expires_in` integer
- `inline` boolean
- `storage_backend` string, nullable: Storage backend to use (e.g. 'minio', 's3'). When omitted the backend is inferred from the resource.

## Headers

- `authorization` string, nullable
- `X-API-Key` string, nullable

## Response `200`

Successful Response

- S3SignedUrlResponse
  - `url` string, required
  - `expires_in` integer, required

## Other responses

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

## Changes

- **2026-11-03** `faa00cf76fcb`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/dograh/apis/dograh-api/changes/api/v1/s3/signed-url/get.md)

---

[API](https://skmtc.dev/dograh/apis/dograh-api.md) - [All operations](https://skmtc.dev/dograh/apis/dograh-api/llms.txt) - [OpenAPI document](https://skmtc.dev/dograh/apis/dograh-api/revisions/faa00cf76fcb?raw)
