---
title: "Presign Upload Parts"
method: POST
path: "/api/workspace/uploads/multipart/parts"
tags: ["runtime_mutations", "workspace-uploads"]
---

# Presign Upload Parts

`POST /api/workspace/uploads/multipart/parts`

Sign a further batch of part URLs for an upload already in flight.

Separate from create because part URLs expire with the STS session that
signed them -- an hour -- while an upload at the ceiling can run for several
on a home connection. Signing all 240 parts up front would hand out URLs
that are dead long before the client reaches them.

## Request body

- MultipartPartsRequest
  - `relative_path` string, required
  - `upload_id` string, nullable
  - `s3_upload_id` string, required
  - `part_numbers` integer[], required

## Response `200`

Successful Response

- MultipartPartsResponse
  - `parts` PresignedPart[], required
    - `part_number` integer, required
    - `url` string, required
  - `expires_in_seconds` integer, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/quadrillion/apis/quadrillion-cloud-api.md) · [All operations](https://skmtc.net/quadrillion/apis/quadrillion-cloud-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/quadrillion/quadrillion-cloud-api/revisions/f90b0af01f1e/schema)
