---
title: "Initialize multipart upload"
method: POST
path: "/api/v1/upload/multipart/init"
tags: ["upload"]
---

# Initialize multipart upload

`POST /api/v1/upload/multipart/init`

## Request

- Base URL: `https://api.bundle.social`
- URL: `https://api.bundle.social/api/v1/upload/multipart/init`
- Auth: API key in header `x-api-key`

Start a multipart upload. Required above the 5 GiB single-request storage limit that /upload/init is bound by, and allowed for any smaller file too. Returns an uploadId plus one presigned URL per part; PUT each part, keep the ETag response header, then call complete with the full part list. Parts are 64 MiB each except the last, up to 10000 parts.

## Request body

- object
  - `teamId` string, nullable
  - `fileName` string, required
  - `mimeType` 'image/jpg' | 'image/jpeg' | 'image/png' | 'image/gif' | 'video/mp4' | 'video/quicktime' | 'application/pdf', required
  - `fileSize` integer, required

## Response `200`

200

- object
  - `uploadId` string, required
  - `path` string, required
  - `partSize` integer, required
  - `parts` object[], required
    - `partNumber` integer, required
    - `url` string, uri, required

## Other responses

- `400`: 400
- `401`: 401
- `403`: 403
- `404`: 404
- `429`: 429
- `500`: 500
- `502`: 502
- `503`: 503
- `504`: 504

## Changes

- **2026-11-03** `fb6e4fbd8d2f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bundle/apis/bundle-social-api/changes/api/v1/upload/multipart/init/post.md)

---

[API](https://skmtc.dev/bundle/apis/bundle-social-api.md) - [All operations](https://skmtc.dev/bundle/apis/bundle-social-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bundle/apis/bundle-social-api/revisions/18efa1cb93a4?raw)
