---
title: "Complete Upload"
method: POST
path: "/s3/completeUpload"
tags: ["s3upload"]
---

# Complete Upload

`POST /s3/completeUpload`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/s3/completeUpload`
- Auth: HTTP bearer

## Request body

- CompleteUploadBody
  - `dataset_id` string, required
  - `object_name` string, required
  - `upload_id` string, required
  - `parts` CompletePart[], required
    - `part_number` integer, required
    - `etag` string, required
    - `checksum_sha256` string, required
  - `checksum_sha256` string, required

## Response `201`

Upload completed

- CompleteUploadResp
  - `location` string, required
  - `key` string, required

## Other responses

- `422`: Validation Error
- `500`: Internal Server Error

## Changes

> 17 revisions in range; 4 not diffed.

- **2025-11-21** `527aef2c43cd`: 1 breaking
  - added the new required request property `dataset_id`
- **2025-10-28** `fe11b70c6405`: 6 breaking, 4 warning, 2 info
  - added the new required request property `checksum_sha256`
  - added the new required request property `object_name`
  - added the new required request property `parts`
  - added the new required request property `upload_id`
  - …8 more
- **2025-05-12** `0dc20e32d5f4`: 2 info
  - api tag `s3upload` added
  - api tag `presignedUrls` removed
- **2025-01-23** `007651d13d90`: 1 breaking, 1 info
  - removed the success response with the status `200`
  - added the success response with the status `201`
- **2025-01-07** `fb94fdb13415`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/swissopenem/apis/ethz-archiver-service/changes/s3/completeUpload/post.md)

---

[API](https://skmtc.dev/swissopenem/apis/ethz-archiver-service.md) - [All operations](https://skmtc.dev/swissopenem/apis/ethz-archiver-service/llms.txt) - [OpenAPI document](https://skmtc.dev/swissopenem/apis/ethz-archiver-service/revisions/527aef2c43cd?raw)
