List Blob Objects in a Folder
curl --request GET \
--url https://blob.vertracloud.app/v1/objectsimport requests
url = "https://blob.vertracloud.app/v1/objects"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://blob.vertracloud.app/v1/objects', 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/objects",
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/objects"
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/objects")
.asString();require 'uri'
require 'net/http'
url = URI("https://blob.vertracloud.app/v1/objects")
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": {
"objects": [
{
"id": "0b6f7c1e-3d2a-4f5b-9a8c-1d2e3f4a5b6c",
"path": "images/logo.png",
"size": 48213,
"content_type": "image/png",
"etag": "9b2cf535f27731c974343645a3085d39",
"sha256": null,
"visibility": "public",
"url": "https://blob.vertracloud.dev/k7p2m9x4qa/images/logo.png",
"cache_control": null,
"content_disposition": "inline",
"filename": null,
"metadata": {},
"expires_at": null,
"created_at": "2026-10-14T12:00:00.000Z",
"updated_at": "2026-10-14T12:00:00.000Z"
}
],
"folders": [
"images/avatars/"
],
"cursor": null
}
}
Objects
List Blob Objects in a Folder
Lists the blob objects of the account by path prefix, with folders and a cursor for the next page. Returns up to 1,000 objects per call.
GET
/
v1
/
objects
List Blob Objects in a Folder
curl --request GET \
--url https://blob.vertracloud.app/v1/objectsimport requests
url = "https://blob.vertracloud.app/v1/objects"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://blob.vertracloud.app/v1/objects', 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/objects",
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/objects"
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/objects")
.asString();require 'uri'
require 'net/http'
url = URI("https://blob.vertracloud.app/v1/objects")
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": {
"objects": [
{
"id": "0b6f7c1e-3d2a-4f5b-9a8c-1d2e3f4a5b6c",
"path": "images/logo.png",
"size": 48213,
"content_type": "image/png",
"etag": "9b2cf535f27731c974343645a3085d39",
"sha256": null,
"visibility": "public",
"url": "https://blob.vertracloud.dev/k7p2m9x4qa/images/logo.png",
"cache_control": null,
"content_disposition": "inline",
"filename": null,
"metadata": {},
"expires_at": null,
"created_at": "2026-10-14T12:00:00.000Z",
"updated_at": "2026-10-14T12:00:00.000Z"
}
],
"folders": [
"images/avatars/"
],
"cursor": null
}
}
Lists the blob objects of the account in path order. Use
prefix to list one folder and delimiter=/ to get its sub-folders as folders. Pass the returned cursor back to get the next page; cursor is null on the last page.
Scope: blob:read.
string
Only objects whose
path starts with this text, for example images/.string
Group paths into folders at this character, usually
/. Folders come back in folders and not as objects.string
Only
public or only private objects.string
The
cursor from the previous page. Omit it for the first page.number
Objects per page, 1–1000. Default
100.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:read workspace permission (blob:manage on routes that change data). Leave it out to act on your own blob.Example request
curl "https://blob.vertracloud.app/v1/objects?prefix=images/&delimiter=/&limit=100" \
-H "Authorization: Bearer $VERTRA_API_KEY"
Response
object
The page of objects, its sub-folders and the cursor for the next page.
Show properties
Show properties
object[]
Objects on this page. Each item has the fields of Get a blob object.
string
Stable object ID.
string
Full path inside the account.
number
Size in bytes.
string
public or private.string | null
Public URL, or
null while private.string[]
Folder prefixes ending in
/. Empty without a delimiter.string | null
Send it back as
cursor to get the next page. null on the last page.{
"response": {
"objects": [
{
"id": "0b6f7c1e-3d2a-4f5b-9a8c-1d2e3f4a5b6c",
"path": "images/logo.png",
"size": 48213,
"content_type": "image/png",
"etag": "9b2cf535f27731c974343645a3085d39",
"sha256": null,
"visibility": "public",
"url": "https://blob.vertracloud.dev/k7p2m9x4qa/images/logo.png",
"cache_control": null,
"content_disposition": "inline",
"filename": null,
"metadata": {},
"expires_at": null,
"created_at": "2026-10-14T12:00:00.000Z",
"updated_at": "2026-10-14T12:00:00.000Z"
}
],
"folders": [
"images/avatars/"
],
"cursor": null
}
}
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.VALIDATION_ERROR(400): A parameter failed validation, withdetails.pathnaming it. A malformedcursor, or one from another query, returns it withdetails.pathset tocursor.
{
"code": "AUTH_TOKEN_MISSING"
}
{
"code": "API_KEY_SCOPE_DENIED"
}
{
"code": "WORKSPACE_NOT_FOUND"
}
{
"code": "VALIDATION_ERROR"
}