---
title: "Generate Presigned Upload URLs"
method: POST
path: "/open/partner/files/upload/generate-presigned-urls"
tags: ["File Upload API"]
---

# Generate Presigned Upload URLs

`POST /open/partner/files/upload/generate-presigned-urls`

Request presigned S3 URLs for a multipart upload.

<Note>The file is split into chunks of 5 MB with one presigned URL per part.</Note>

For each part returned:

1. **Send raw bytes to S3** — `PUT PresignedUrl` the raw bytes of the chunk to (no auth needed).
2. **Collect the `ETag`** from each S3 response header — These will be needed in the [complete-upload endpoint](/api-reference/file-upload-api/complete-multipart-upload).

## Headers

- `Content-Type` string, required

## Request body

- GeneratePresignedUrlsRequest
  - `filesize` integer, required — Total size of the file, in bytes. Determines how many parts are returned.
  - `filetype` string, required — File extension of the audio file. ("mp3" or "opus")

## Response `200`

Presigned URLs issued

- GeneratePresignedUrlsResponse
  - `FileId` string — Identifier for the file being uploaded. Pass to complete-upload.
  - `UploadId` string — Identifier for the multipart upload session. Pass to complete-upload.
  - `ChunkSize` integer — Size of each chunk, in bytes. The file should be split into chunks of this size.
  - `Parts` PresignedPart[] — One entry per chunk, each with a presigned S3 URL to PUT the chunk to.
    - `PartNumber` integer — 1-based index of the chunk.
    - `PresignedUrl` string — Pre-authorized S3 URL. PUT the raw bytes of this chunk to it directly (no auth header), then read the `ETag` response header.

---

[API](https://skmtc.net/plaud/apis/authentication-tokens.md) · [All operations](https://skmtc.net/plaud/apis/authentication-tokens/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plaud/authentication-tokens/revisions/062a14150fe6/schema)
