---
title: "Complete Upload"
method: POST
path: "/v2/uploads/complete"
tags: ["uploads"]
---

# Complete Upload

`POST /v2/uploads/complete`

Verify a staged upload and return its storage locator.

## Query parameters

- `taskset_id` string, uuid, required — Taskset the upload is attached to

## Request body

- StagedUploadCompleteRequest — Finish an upload: multipart uploads assemble their parts first. ``s3_upload_id`` and ``parts`` echo a multipart reservation and must be provided together; single-PUT uploads send neither.
  - `upload_id` string, uuid, required
  - `filename` string, required
  - `s3_upload_id` string, nullable
  - `parts` StagedUploadCompletedPart[], nullable
    - `part_number` integer, required
    - `etag` string, required

## Response `200`

Successful Response

- UploadResponse — A freshly staged upload. ``url`` is the ``storage://`` locator the client hands back when attaching the file to an entity.
  - `url` string, required
  - `name` string, required
  - `size` integer, required
  - `content_type` string, required

## Other responses

- `400` — Invalid or malformed request
- `401` — Missing or invalid credentials
- `403` — Caller may not access this resource
- `404` — Referenced entity does not exist
- `409` — Resource already exists
- `422` — Validation Error

---

[API](https://skmtc.dev/hud/apis/hud-platform.md) · [All operations](https://skmtc.dev/hud/apis/hud-platform/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hud/hud-platform/revisions/58558fc733d9/schema)
