> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.twelvelabs.io/v1.3/api-reference/upload-files/multipart-uploads/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.twelvelabs.io/_mcp/server. # Multipart uploads > Upload local video, audio, and images in chunks for reliable, resumable transfers. Use multipart uploads for local video and audio files up to 10 GB, and images up to 32 MB. This method divides the file into smaller chunks for reliable uploads, especially when you need parallel chunk uploads or want to resume an interrupted transfer. Multipart uploads create assets that you can use in different workflows. # Workflow Determine the total size of your file in bytes. You'll need this value when creating the upload session. **Create an upload session**: Invoke the [`POST`](/v1.3/api-reference/upload-content/multipart-uploads/create) method of the `/assets/multipart-uploads` endpoint, providing details about your file, including its size. The response contains, among other information, the unique identifier of the asset, a list of upload URLs, and the size of each chunk in bytes. **Split your file**: Use the chunk size from the response to divide your file into chunks of the specified size. **Upload chunks**: Transfer each chunk to its designated presigned URL. You can upload the chunks in parallel for improved performance. Save the ETag from each upload response for progress reporting. *(Optional)* **Request additional URLs**: Invoke the [`POST`](/v1.3/api-reference/upload-content/multipart-uploads/get-additional-presigned-urls) method of the `/assets/multipart-uploads/{upload_id}/presigned-urls` endpoint if you need URLs for remaining chunks or if existing URLs expire. **Report progress**: Submit completed chunks via the [`POST`](/v1.3/api-reference/upload-content/multipart-uploads/report-chunk-batch) method of the `/assets/multipart-uploads/{upload_id}` endpoint in batches as chunks finish uploading. Use the ETag from each chunk upload as proof of successful transfer. **Confirm completion**: The upload session is complete when the [`GET`](/v1.3/api-reference/upload-content/multipart-uploads/get-status) method of the `/assets/multipart-uploads/{upload_id}` endpoint returns `status: 'completed'`. This status means the platform received the file, not that the asset is ready. Asset processing is asynchronous. Poll the [Retrieve an asset](/v1.3/api-reference/upload-content/direct-uploads/retrieve) endpoint until the `status` field is `ready` before you use the asset. **What you do next depends on your use case**: * **For creating embeddings**: Use the asset ID with the [Embed API v2](/v1.3/api-reference/create-embeddings-v2). * **For search and analysis**: [Index your content](/api-reference/index-content/create) using the asset ID. Note the following about multipart uploads: * Upload sessions expire after 24 hours. * Presigned URLs expire after one hour. You can request additional URLs if the original ones expire. * Clean up temporary chunk files after the upload completes. # Sample implementation For a complete working example, see the [Python multipart upload script](https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/scripts/multipart.py) that demonstrates the entire workflow with error handling and parallel chunk uploads. > Upload local video, audio, and images in chunks for reliable, resumable transfers. ## API Docs - Multipart uploads [Create a multipart upload session](https://docs.twelvelabs.io/api-reference/upload-files/multipart-uploads/create.md) - Multipart uploads [Retrieve the status of an upload session](https://docs.twelvelabs.io/api-reference/upload-files/multipart-uploads/get-status.md) - Multipart uploads [List incomplete uploads](https://docs.twelvelabs.io/api-reference/upload-files/multipart-uploads/list-incomplete-uploads.md) - Multipart uploads [Report uploaded chunks](https://docs.twelvelabs.io/api-reference/upload-files/multipart-uploads/report-chunk-batch.md) - Multipart uploads [Request presigned URLs for the remaining chunks](https://docs.twelvelabs.io/api-reference/upload-files/multipart-uploads/get-additional-presigned-urls.md) ## OpenAPI Specification The raw OpenAPI 3.1 specification for this API is available at: - [OpenAPI JSON](https://docs.twelvelabs.io/v1.3/api-reference/upload-files/multipart-uploads/openapi.json) - [OpenAPI YAML](https://docs.twelvelabs.io/v1.3/api-reference/upload-files/multipart-uploads/openapi.yaml)