---
title: "Presign Tryon Multipart Parts"
method: POST
path: "/api/tryon/multipart/presign-parts"
tags: ["tryon"]
---

# Presign Tryon Multipart Parts

`POST /api/tryon/multipart/presign-parts`

## Request

- Base URL: `https://api.tintin-x.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tintin-x.com/api/tryon/multipart/presign-parts`
- Auth: HTTP bearer

Mint presigned PUT URLs so the browser uploads each part DIRECT
to S3 in parallel. Replaces the legacy /multipart/upload-part proxy
(which round-tripped every byte through the API). Mirrors the
tintin-app storage flow at /api/storage/multipart/presign-parts.
URLs expire after 1 hour — clients usually request all parts up
front but can also stream-request them as the concurrency queue
drains.

## Request body

- TryonMultipartPresignPartsRequest
  - `project_id` string, uuid, nullable
  - `editing_project_id` string, uuid, nullable
  - `upload_id` string, required
  - `s3_key` string, required
  - `part_numbers` integer[], required

## Response `200`

Successful Response

- TryonMultipartPresignPartsResponse
  - `urls` TryonMultipartPresignedPart[], required
    - `part_number` integer, required
    - `url` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/tintin-x/apis/tintin-api.md) · [All operations](https://skmtc.dev/tintin-x/apis/tintin-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tintin-x/apis/tintin-api/revisions/8839a8d0a66c?raw)
