[Yandex Cloud documentation](../../../index.md) > [Yandex Object Storage](../../index.md) > API reference > [AWS S3 REST](../index.md) > [REST](index.md) > Multipart upload > General multipart upload procedure

# Multipart upload process

Multipart upload allows you to save objects to Object Storage in parts. This can be useful when uploading or copying large objects. We recommend using a multipart upload for objects that are at least 100 MB.

To find out the maximum size for an object you can upload, see [Object Storage quotas and limits](../../concepts/limits.md).

The multipart upload includes the following steps:
1. Upload initiation.
    The user sends a [request to initiate a multipart upload (CreateMultipartUpload)](multipart/startupload.md), and Object Storage returns an ID for all subsequent operations with the upload.
    User-defined object metadata should be provided at this step.
1. Multipart object upload.
    Each part of the object is sent as a [separate request (UploadPart)](multipart/uploadpart.md) and required to have a sequence number Object Storage will use to assemble the object. If Object Storage receives two parts of the object with the same number, it will save the last one received.
    For each uploaded part, Object Storage returns the `ETag` header in the response. The user should save the numbers and their corresponding `ETag` values for all uploaded parts. It is necessary for the upload complete operation.
    During the upload, Object Storage can give you a [list of already uploaded object parts (ListParts)](multipart/listparts.md).
1. Completing the upload.
    Once it gets the [complete upload request (CompleteMultipartUpload)](multipart/completeupload.md), Object Storage assembles all the uploaded parts into a single object and attaches to it the metadata provided during the initiation of the upload.

    {% note info %}

    Until the upload is complete, the object parts are stored separately and take up space, but you cannot retrieve them from Object Storage. Incomplete uploads are taken into account when calculating the space used.

    {% endnote %}

    Other than the complete upload request, the user can also send the [abort upload request (AbortMultipartUpload)](multipart/abortupload.md). In this case, Object Storage deletes all the parts of the object it received and the upload itself.
    After completing or aborting an upload, the user will not be able to use the ID of that upload in requests.

You can run several multipart uploads simultaneously.

You can [get a list of incomplete uploads (ListMultipartUploads)](multipart/listuploads.md).

Multipart upload methods:

Method|Description
-----|--------
[CreateMultipartUpload](multipart/startupload.md) | Starts a multipart upload.
[UploadPart](multipart/uploadpart.md) | Uploads a part of an object.
[UploadPartCopy](multipart/copypart.md) | Copies part of an object.
[ListParts](multipart/listparts.md) | Returns a list of uploaded parts.
[AbortMultipartUpload](multipart/abortupload.md) | Aborts a multipart upload.
[CompleteMultipartUpload](multipart/completeupload.md) | Completes a multipart upload.
[ListMultipartUploads](multipart/listuploads.md) | Returns a list of incomplete uploads.

#### Useful links {#see-also}

* [Getting started with the AWS S3 API in Yandex Object Storage](../s3-api-quickstart.md)

* [Debugging requests using the AWS CLI](../signing-requests.md#debugging)

* [Example of sending a signed request using curl](../../api-ref/authentication.md#s3-api-example)

* [Code example for generating a signature](../../concepts/pre-signed-urls.md#code-examples)