---
title: "Complete multipart upload"
method: POST
path: "/api/v1/upload/multipart/complete"
tags: ["upload"]
---

# Complete multipart upload

`POST /api/v1/upload/multipart/complete`

## Request

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

Assemble the uploaded parts into the final object and add it to your media library. Send every part with the ETag returned by its PUT. A 500 is always retryable — whatever we have (your parts, or the assembled object) is kept, so retry this call rather than re-uploading. A 400 is final: either the part list was wrong, or the file itself was rejected (empty, wrong type, too large, no readable preview) and its bytes have been deleted. A 403 means quota or permissions and is raised before assembly, so your parts are still open — call abort yourself. Calling this again after it already succeeded returns the same upload instead of charging you twice.

## Request body

- object
  - `teamId` string, nullable
  - `parts` object[], required
    - `partNumber` integer, required
    - `etag` string, required
  - `path` string, required
  - `uploadId` string, required

## Response `200`

200

- object
  - `id` string, required
  - `teamId` string, nullable
  - `organizationId` string, nullable
  - `iconUrl` string, uri, nullable
  - `thumbnailUrl` string, uri, nullable
  - `url` string, uri, nullable
  - `externalLink` string, uri, nullable
  - `iconPath` string, nullable
  - `thumbnailPath` string, nullable
  - `path` string, nullable
  - `type` 'image' | 'video' | 'document', required
  - `width` number, nullable
  - `height` number, nullable
  - `fileSize` number, nullable
  - `videoLength` number, nullable
  - `mime` string, nullable
  - `ext` string, nullable
  - `createdAt` string, date-time, nullable, required
  - `updatedAt` string, date-time, nullable, 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/complete/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)
