---
title: "Multipart Init"
method: POST
path: "/upload/multipart/init"
tags: ["upload"]
---

# Multipart Init

`POST /upload/multipart/init`

## Request

- Base URL: `https://api.seal.net` (the document declares no server; this is the origin it was published from)
- URL: `https://api.seal.net/upload/multipart/init`
- Auth: none declared

Initialize a part-based multipart upload.

Returns upload_id and part_size. Client should:
1. Split file into parts of part_size bytes
2. Get presigned URLs for the parts from POST /multipart/parts
3. PUT encrypted chunk directly to presigned URL
4. Collect ETags from PUT responses
5. Call POST /multipart/complete with all parts + ETags

## Request body

- MultipartInitRequest: Request to initialize a part-based multipart upload.
  - `seal_id` string, required: Seal ID
  - `content_type` string, required: MIME type
  - `content_length` integer, required: Ciphertext length: the registered size
  - `file_id` string, uuid, required: The file row from registration
  - `part_size` integer, nullable: Client part size in bytes (defaults to the server's)

## Response `200`

Successful Response

- MultipartInitResponse: Response from multipart init.
  - `upload_id` string, required: Unique upload ID for this multipart session
  - `key` string, nullable: Storage key (internal, for debugging)
  - `part_size` integer, required: Recommended part size in bytes

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/seal/apis/seal-api.md) · [All operations](https://skmtc.dev/seal/apis/seal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/seal/apis/seal-api/revisions/68460cfa1957?raw)
