---
title: "Completes a multipart upload"
method: PUT
path: "/layers/{layerId}/data/{dataHandle}/multiparts/{multiPartToken}"
tags: ["blob"]
---

# Completes a multipart upload

`PUT /layers/{layerId}/data/{dataHandle}/multiparts/{multiPartToken}`

Call this API when all parts have been uploaded. Please keep in mind that the actual URL for this operation must be obtained from the response body of start multipart operation that is 'POST /layers/{layerId}/data/{dataHandle}/multiparts' from the 'complete' element under the top level 'links' element of the response.

## Path parameters

- `layerId` string, required
- `dataHandle` string, required
- `multiPartToken` string, required

## Query parameters

- `billingTag` string

## Request body

- MultipartCompleteRequest
  - `parts` MultipartCompletePart[]
    - `etag` string, required — The etag assigned by the system to identify the uploaded part to include in the final publication. The etag is returned by the 'POST /layers/{layerId}/data/{dataHandle}/multiparts/{multiPartToken}/parts' operation, in its response `ETag` header after successfully uploading a part.
    - `number` integer, required — The number of the part of the multipart upload. This is the same number used in the `partNumber` parameter in the 'POST /layers/{layerId}/data/{dataHandle}/multiparts/{multiPartToken}/parts' operation, corresponding to the `etag` returned by this operation. If an error occurs during upload, do not reuse the `partNumber` when retrying the upload.

## Response `204`

No Content

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict - indicates blob with this dataHandle already exists

---

[API](https://skmtc.dev/here/apis/query-api-v1.md) · [All operations](https://skmtc.dev/here/apis/query-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/here/query-api-v1/revisions/30e5d2645407/schema)
