---
title: "Get a presigned upload URL"
method: POST
path: "/api/media/upload-url"
tags: ["Media"]
---

# Get a presigned upload URL

`POST /api/media/upload-url`

## Request

- Base URL: `https://api.dunsocial.com`
- URL: `https://api.dunsocial.com/api/media/upload-url`
- Auth: HTTP bearer

## Headers

- `X-Workspace-Id` string, required

## Request body

- RequestUploadUrl
  - `filename` string, required
  - `mimeType` string, required
  - `fileSize` number, required

## Response `200`

Presign

- object
  - `success` true, required
  - `data` UploadUrl
    - `uploadUrl` string, required
    - `storageKey` string, required
    - `expiresAt` string

## Other responses

- `400`: Validation or business rule failed
- `401`: Missing or invalid bearer token
- `402`: Workspace is not on a paid plan
- `403`: Wrong workspace, missing scope, or role

---

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