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

# Complete Upload

`POST /s3/completeUpload`

## 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

- **2025-11-21** `527aef2c43cd` — 1 breaking
  - added the new required request property `dataset_id`
- **2025-10-28** `5c36b94b3af5` — 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-09** `500a3e74a5a6` — 2 info
  - api tag `s3upload` added
  - api tag `presignedUrls` removed

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

---

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