---
title: "Start a media upload"
method: POST
path: "/v1/workspaces/{workspaceId}/media/upload"
tags: ["Media"]
---

# Start a media upload

`POST /v1/workspaces/{workspaceId}/media/upload`

## Request

- Base URL: `https://api.maevesocial.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.maevesocial.com/v1/workspaces/{workspaceId}/media/upload`
- Auth: HTTP bearer

Returns a presigned URL for direct upload to cloud storage.

## Path parameters

- `workspaceId` string, uuid, required

## Request body

- InitUploadDto
  - `filename` string, required
  - `contentType` 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp' | 'image/avif' | 'video/mp4' | 'video/quicktime' | 'application/pdf' | 'application/vnd.ms-powerpoint' | 'application/vnd.openxmlformats-officedocument.presentationml.presentation' | 'application/msword' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', required
  - `fileSize` integer, required

## Response `201`

Upload session created with presigned URL

- object
  - `data` PublicMediaUploadSessionDto, required
    - `sessionId` string, uuid, required
    - `uploadUrl` string, required
    - `expiresIn` number, required
  - `meta` unknown, required

---

[API](https://skmtc.dev/maevesocial/apis/maeve-social-api.md) · [All operations](https://skmtc.dev/maevesocial/apis/maeve-social-api/llms.txt) · [OpenAPI document](https://skmtc.dev/maevesocial/apis/maeve-social-api/revisions/1b00fd7e4b15?raw)
