List Blob Uploads in Progress
curl --request GET \
--url https://blob.vertracloud.app/v1/uploadsimport requests
url = "https://blob.vertracloud.app/v1/uploads"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://blob.vertracloud.app/v1/uploads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://blob.vertracloud.app/v1/uploads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://blob.vertracloud.app/v1/uploads"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://blob.vertracloud.app/v1/uploads")
.asString();require 'uri'
require 'net/http'
url = URI("https://blob.vertracloud.app/v1/uploads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"response": [
{
"id": "7c1d2e3f-4a5b-4c6d-8e7f-0a1b2c3d4e5f",
"path": "videos/demo.mp4",
"mode": "multipart",
"status": "pending",
"size": 2147483648,
"expires_at": "2026-10-14T13:00:00.000Z",
"headers": {
"content-type": "video/mp4"
},
"part_size": 67108864,
"part_count": 32,
"uploaded_parts": [],
"created_at": "2026-10-14T12:00:00.000Z"
}
]
}
Uploads
List Blob Uploads in Progress
Lists the direct uploads of the account that are still in progress, so you can resume or abort them.
GET
/
v1
/
uploads
List Blob Uploads in Progress
curl --request GET \
--url https://blob.vertracloud.app/v1/uploadsimport requests
url = "https://blob.vertracloud.app/v1/uploads"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://blob.vertracloud.app/v1/uploads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://blob.vertracloud.app/v1/uploads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://blob.vertracloud.app/v1/uploads"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://blob.vertracloud.app/v1/uploads")
.asString();require 'uri'
require 'net/http'
url = URI("https://blob.vertracloud.app/v1/uploads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"response": [
{
"id": "7c1d2e3f-4a5b-4c6d-8e7f-0a1b2c3d4e5f",
"path": "videos/demo.mp4",
"mode": "multipart",
"status": "pending",
"size": 2147483648,
"expires_at": "2026-10-14T13:00:00.000Z",
"headers": {
"content-type": "video/mp4"
},
"part_size": 67108864,
"part_count": 32,
"uploaded_parts": [],
"created_at": "2026-10-14T12:00:00.000Z"
}
]
}
Lists the direct uploads of the account that are still
pending. Use it after an interruption to find an upload ID, then read its uploaded_parts with Get upload status.
Scope: blob:write.
string
The workspace ID, when the blob belongs to a workspace. The call acts on the blob of the workspace owner and needs the
blob:manage workspace permission, because uploads in progress belong to whoever manages the files. Leave it out to act on your own blob.Example request
curl "https://blob.vertracloud.app/v1/uploads" \
-H "Authorization: Bearer $VERTRA_API_KEY"
Response
object[]
The uploads in progress.
Show properties
Show properties
string
Upload ID. Use it for status, parts, complete and abort.
string
Final path, including the random suffix when one was requested.
string
single (one PUT of the whole file to url) or multipart (several parts, each with its own URL).string
pending, completed, aborted or expired.number
Declared size in bytes. The stored bytes must match it at
complete.string
When the URLs and the reserved storage expire, as an ISO 8601 timestamp.
string
Only in
single mode: the URL to PUT the whole file to.object
Headers the
PUT must send exactly as given, because they are part of the signature.number
Only in
multipart mode: the fixed part size in bytes. The last part can be smaller.number
Only in
multipart mode: how many parts the file has.number[]
Part numbers already stored. Use them to resume an interrupted upload.
string
ISO 8601 creation time.
{
"response": [
{
"id": "7c1d2e3f-4a5b-4c6d-8e7f-0a1b2c3d4e5f",
"path": "videos/demo.mp4",
"mode": "multipart",
"status": "pending",
"size": 2147483648,
"expires_at": "2026-10-14T13:00:00.000Z",
"headers": {
"content-type": "video/mp4"
},
"part_size": 67108864,
"part_count": 32,
"uploaded_parts": [],
"created_at": "2026-10-14T12:00:00.000Z"
}
]
}
Error Responses
string
The error code indicating the reason for failure. Possible values:
AUTH_TOKEN_MISSING(401): NoAuthorizationheader was sent.API_KEY_INVALID(401): The API key doesn’t exist, was revoked, or its secret doesn’t match.API_KEY_SCOPE_DENIED(403): The key lacks the scope this route needs (blob:readorblob:write);details.requirednames it.WORKSPACE_PERMISSION_DENIED(403): Only withworkspace_id: you’re not a member, or your role lacks the blob permission.WORKSPACE_NOT_FOUND(404): Only withworkspace_id: no workspace with that ID, or you’re not a member.
{
"code": "AUTH_TOKEN_MISSING"
}
{
"code": "API_KEY_SCOPE_DENIED"
}
{
"code": "WORKSPACE_NOT_FOUND"
}