---
title: "Generates batches of presigned URLs for multipart parts"
method: POST
path: "/uploads/batch-presign-multipart-parts.json"
tags: ["Uploads"]
---

# Generates batches of presigned URLs for multipart parts

`POST /uploads/batch-presign-multipart-parts.json`

Multipart uploads are uploaded in chunks or parts to individual presigned
URLs, similar to the one generated by /generate-presigned-put. The part
numbers provided must be between 1 and 10000. The total number of parts
will depend on the chunk size in bytes that you intend to use to upload
each chunk. For example a 12MB file may have 2 5MB chunks and a final
2MB chunk, for part numbers 1, 2, and 3.

This endpoint will return a presigned URL for each part number provided,
which you can then use to send PUT requests for the binary chunk corresponding
to that part. When the part is uploaded, the provider should return an
ETag for the part, and this should be stored along with the part number,
because this is needed to complete the multipart upload.

You must have the correct permissions and CORS settings configured in your
external provider. We support AWS S3 as the default. See:

https://meta.discourse.org/t/-/210469#s3-multipart-direct-uploads-4.

An external file store must be set up and `enable_direct_s3_uploads` must
be set to true for this endpoint to function.

## Request body

- object
  - `part_numbers` unknown[], required — The part numbers to generate the presigned URLs for, must be between 1 and 10000.
    - unknown
  - `unique_identifier` string, required — The unique identifier returned in the original /create-multipart request.

## Response `200`

external upload initialized

- object
  - `presigned_urls` object, required — The presigned URLs for each part number, which has the part numbers as keys.

---

[API](https://skmtc.dev/discourse/apis/discourse-api-documentation.md) · [All operations](https://skmtc.dev/discourse/apis/discourse-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/discourse/discourse-api-documentation/revisions/2fd8fd2d6fd0/schema)
