curl -X POST https://app.drime.cloud/api/v1/s3/multipart/complete \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"key": "uploads/1e4cbca8.../1e4cbca8...",
"uploadId": "AFNhWKh6Cn6f...",
"parts": [
{"PartNumber": 1, "ETag": "\"22b1d5721320f9da081e4987f0e0ce65\""},
{"PartNumber": 2, "ETag": "\"479df46a73824ca1a5e44efe64d3dbb7\""}
]
}'
// After uploading all parts...
const response = await fetch('https://app.drime.cloud/api/v1/s3/multipart/complete', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
key,
uploadId,
parts: uploadedParts // Array of { PartNumber, ETag }
})
});
const { location } = await response.json();
console.log('Upload complete:', location);
// Now register the file with /s3/entries
import requests
response = requests.post(
'https://app.drime.cloud/api/v1/s3/multipart/complete',
headers={'Authorization': 'Bearer YOUR_ACCESS_TOKEN'},
json={
'key': key,
'uploadId': upload_id,
'parts': [
{'PartNumber': 1, 'ETag': '"22b1d5721320f9da081e4987f0e0ce65"'},
{'PartNumber': 2, 'ETag': '"479df46a73824ca1a5e44efe64d3dbb7"'}
]
}
)
print('Upload complete:', response.json()['location'])
{
"location": "https://xxx.r2.cloudflarestorage.com/drimestorage/uploads%2F1e4cbca8...%2F1e4cbca8...",
"status": "success"
}
Multipart Uploads
Complete Multipart Upload
Finalize a multipart upload
POST
/
s3
/
multipart
/
complete
curl -X POST https://app.drime.cloud/api/v1/s3/multipart/complete \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"key": "uploads/1e4cbca8.../1e4cbca8...",
"uploadId": "AFNhWKh6Cn6f...",
"parts": [
{"PartNumber": 1, "ETag": "\"22b1d5721320f9da081e4987f0e0ce65\""},
{"PartNumber": 2, "ETag": "\"479df46a73824ca1a5e44efe64d3dbb7\""}
]
}'
// After uploading all parts...
const response = await fetch('https://app.drime.cloud/api/v1/s3/multipart/complete', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
key,
uploadId,
parts: uploadedParts // Array of { PartNumber, ETag }
})
});
const { location } = await response.json();
console.log('Upload complete:', location);
// Now register the file with /s3/entries
import requests
response = requests.post(
'https://app.drime.cloud/api/v1/s3/multipart/complete',
headers={'Authorization': 'Bearer YOUR_ACCESS_TOKEN'},
json={
'key': key,
'uploadId': upload_id,
'parts': [
{'PartNumber': 1, 'ETag': '"22b1d5721320f9da081e4987f0e0ce65"'},
{'PartNumber': 2, 'ETag': '"479df46a73824ca1a5e44efe64d3dbb7"'}
]
}
)
print('Upload complete:', response.json()['location'])
{
"location": "https://xxx.r2.cloudflarestorage.com/drimestorage/uploads%2F1e4cbca8...%2F1e4cbca8...",
"status": "success"
}
Overview
Completes a multipart upload by assembling all uploaded parts. After this, call/s3/entries to register the file in Drime.
Request Body
string
required
S3 key from
createMultipartUploadstring
required
Upload ID from
createMultipartUploadarray
required
Response
string
Final S3 location of the assembled file
string
Request status (
success)curl -X POST https://app.drime.cloud/api/v1/s3/multipart/complete \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"key": "uploads/1e4cbca8.../1e4cbca8...",
"uploadId": "AFNhWKh6Cn6f...",
"parts": [
{"PartNumber": 1, "ETag": "\"22b1d5721320f9da081e4987f0e0ce65\""},
{"PartNumber": 2, "ETag": "\"479df46a73824ca1a5e44efe64d3dbb7\""}
]
}'
// After uploading all parts...
const response = await fetch('https://app.drime.cloud/api/v1/s3/multipart/complete', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
key,
uploadId,
parts: uploadedParts // Array of { PartNumber, ETag }
})
});
const { location } = await response.json();
console.log('Upload complete:', location);
// Now register the file with /s3/entries
import requests
response = requests.post(
'https://app.drime.cloud/api/v1/s3/multipart/complete',
headers={'Authorization': 'Bearer YOUR_ACCESS_TOKEN'},
json={
'key': key,
'uploadId': upload_id,
'parts': [
{'PartNumber': 1, 'ETag': '"22b1d5721320f9da081e4987f0e0ce65"'},
{'PartNumber': 2, 'ETag': '"479df46a73824ca1a5e44efe64d3dbb7"'}
]
}
)
print('Upload complete:', response.json()['location'])
{
"location": "https://xxx.r2.cloudflarestorage.com/drimestorage/uploads%2F1e4cbca8...%2F1e4cbca8...",
"status": "success"
}
ETags must include the surrounding quotes (e.g.,
"abc123"). These are returned in the S3 response headers.⌘I

