Marvia Developer Portal
DocsAPI ReferenceAbout
DocsAPI ReferenceAbout
  1. Docs
  • Getting Started
  • Authentication
  • Permissions
  • Filtering
  • Uploading Files
  • Using Marvia CDN
  • API Reference
    • Users
      • Get a user
      • Delete a user
      • Update a user
      • List
      • Create a new user
      • Get user locations
      • Update user locations
      • Get user groups
      • Update user groups
    • Products
      • List products
      • Get a product
      • Get product API module
      • Get product delivery module
      • Get product distribution module
      • Get product locations module
      • Get product files module
      • Get product stock module
      • Get product price module
      • Get product workflow module
      • Get product socials module
      • Get product internal comment module
      • Get product campaigns module
      • Get product permissions module
      • Get product reservations module
      • Get product template module
      • Get product form builder module
      • Get product variants module
    • Locations
      • Update a location
      • Get a location
      • Delete a location
      • List locations
      • Create a new location
    • Groups
      • Get a group
      • Update a group
      • Delete a group
      • List groups
      • Create a new group
    • Uploads
      • Initialize multipart upload
      • Complete multipart upload
    • Assets
      • List assets
      • Create a new asset
      • Get asset
      • Update an asset
      • Search assets
      • Get all meta tags
      • Get asset meta tags
      • Update asset meta tags
    • Posts
      • List posts
      • Get a post
  • Schemas
    • Schemas
      • LocationAddress
      • Location
      • Group
      • LocationLegal
      • nonEmptyString
      • LocationInvoice
      • Date
      • LocationContact
      • LocationMediaItem
      • HttpApiDecodeError
      • Issue
      • LocationCoordinates
      • PropertyKey
      • UnauthorizedError
      • LocationMedia
      • MissingPermissionsError
      • User
      • PartialLocation
      • InternalServerError
      • UserNotFoundError
      • UsernameNotUniqueError
      • TranslationSchema
      • EmailNotUniqueError
      • GroupItem
      • CategorySchema
      • TranslationLabelSchema
      • GetOneProduct
      • UpdateGroupsPayload
      • DefaultProduct
      • VariantParentProduct
      • VariantProduct
      • DateFromString
      • LocationNotFoundError
      • ProductNotFoundError
      • ProductApiModule
      • ModuleNotActiveError
      • ModuleIncompatibleWithProductTypeError
      • ProductDeliveryModule
      • DuplicateIdentifierError
      • ProductDistributionModule
      • GroupNotFoundError
      • ProductLocationsModule
      • DuplicateGroupNameError
      • ProductFilesModule
      • ProductStockModule
      • ProductPriceModule
      • UUID
      • ProductWorkflowModule
      • ProductSocialsModule
      • ProductInternalCommentModule
      • ProductCampaignsModule
      • ProductPermissionsModule
      • MetaTagCategoryDefinitionSchema
      • AssetNotFoundError
      • MetaTagDefinitionSchema
      • InvalidLocaleError
      • ProductReservationsModule
      • MetaTagOptionSchema
      • FileNotFoundError
      • ProductTemplateModule
      • ProductFormBuilderModule
      • AssetMetaTagsSchema
      • FormBuilderElement
      • MetaTagValidationError
      • ProductVariantsModule
      • PostNotFoundError
DocsAPI ReferenceAbout
DocsAPI ReferenceAbout
  1. Docs

Uploading Files

Large files are uploaded using a multipart upload process. This makes uploads more reliable and efficient, especially for big files or unstable connections.
The following repository provides reference implementations and examples showcasing how to integrate with Marvia's API upload endpoints: marvia/api-upload-examples

Process Overview#

The process involves three main steps:
1.
Initialize the multipart upload - Initialize multipart upload
2.
Upload each part to the pre-signed URLs returned
3.
Complete the multipart upload with the part checksums (ETags) - Complete multipart upload
The sequence diagram below visually explains the expected integration flow.

1. Initialize Multipart Upload#

Call the initialize endpoint with the following file metadata:
fileName
fileSize
Response includes:
A temporary uuidfor tracking
An array of parts with { partNumber, url } where each part must be uploaded

2. Upload Each Part#

For each part:
Use the provided pre-signed URL
Upload with an HTTP PUT request
Record the ETag from the response headers (this is required later)
Example (cURL)

3. Complete Multipart Upload#

Once all parts are uploaded and you have their ETags, call the complete endpoint with:
The uuid from step 1
An array of { partNumber, ETag } for each uploaded part
Example request body:
{
  "uuid": "UPLOAD-ID-FROM-INIT",
  "parts": [
    { "partNumber": 1, "ETag": "etag-part-1" },
    { "partNumber": 2, "ETag": "etag-part-2" },
    { "partNumber": 3, "ETag": "etag-part-3" }
  ]
}
Response includes:
Final fileUuid
Public or signed url to the completed file

Summary#

Use Initialize Multipart Upload to start and get pre-signed part URLs.
Upload all parts directly to storage, keeping track of each ETag.
Call Complete Multipart Upload with the collected ETags.
The API responds with the final fileUuid and accessible file URL.
Modified at 2025-11-20 06:15:20
Previous
Filtering
Next
Using Marvia CDN
Built with