---
title: "Upload one part of a zip archive's multipart transfer"
method: PUT
path: "/v1/imports/{id}/parts/{n}"
tags: ["Imports"]
---

# Upload one part of a zip archive's multipart transfer

`PUT /v1/imports/{id}/parts/{n}`

## Request

- Base URL: `https://api.memestack.ai`
- URL: `https://api.memestack.ai/v1/imports/{id}/parts/{n}`
- Auth: HTTP bearer

Owner only. Non-final parts MUST be exactly IMPORT_PART_SIZE bytes (90 MB); send header `X-Last-Part: 1` on the final part, which may be up to and including that size. Requires a `Content-Length` header (chunked transfer encoding is not supported — the size check runs before any bytes are uploaded). The first accepted part transitions the import from awaiting_transfer to transferring.

## Path parameters

- `id` string, uuid, required
- `n` integer, required

## Headers

- `X-Last-Part` '1'

## Response `200`

Part accepted.

- object
  - `etag` string

## Other responses

- `400`: Missing/invalid Content-Length, or a non-final part is not exactly IMPORT_PART_SIZE bytes (or the final part exceeds it).
- `404`: Import not found, or caller is not the owner.
- `409`: Import is not in awaiting_transfer or transferring status.

---

[API](https://skmtc.dev/memestack/apis/memestack-api.md) · [All operations](https://skmtc.dev/memestack/apis/memestack-api/llms.txt) · [OpenAPI document](https://skmtc.dev/memestack/apis/memestack-api/revisions/9d3a19565f75?raw)
