Multipart uploads
Parallel part uploads for files larger than 100 MiB.
When sizeBytes is greater than 100 MiB, POST /api/v1/uploads returns a multipart session instead of a single uploadUrl.
Init response
{
"ok": true,
"data": {
"multipart": true,
"fileId": "…",
"objectKey": "…",
"uploadId": "…",
"partSize": 10485760,
"signPartUrl": "/api/v1/uploads/multipart/sign-part",
"completeUrl": "/api/v1/uploads/multipart/complete"
}
}Part size is chosen per file (5 MiB to 1 GiB, targeting ~16 parts). Upload parts concurrently for best throughput.
Sign a part
POST /api/v1/uploads/multipart/sign-part{
"fileId": "…",
"uploadId": "…",
"partNumber": 1
}{
"ok": true,
"data": {
"fileId": "…",
"uploadId": "…",
"partNumber": 1,
"partUrl": "https://…"
}
}PUT each part to its partUrl. Capture the returned ETag header for completion.
Complete multipart
POST /api/v1/uploads/multipart/complete{
"fileId": "…",
"uploadId": "…",
"parts": [
{ "ETag": "\"abc…\"", "PartNumber": 1 },
{ "ETag": "\"def…\"", "PartNumber": 2 }
]
}Parts may be sent in any order; Zog sorts them before assembling the object.
Tips
- Sign and upload parts concurrently for speed
- Retry failed part PUTs with a fresh signed URL if needed
- Call abort if you abandon a multipart session