List Share Links
curl --request GET \
--url https://blob.vertracloud.app/v1/sharesimport requests
url = "https://blob.vertracloud.app/v1/shares"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://blob.vertracloud.app/v1/shares', 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/shares",
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/shares"
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/shares")
.asString();require 'uri'
require 'net/http'
url = URI("https://blob.vertracloud.app/v1/shares")
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": "3e4f5a6b-7c8d-4e9f-a0b1-c2d3e4f5a6b7",
"object_id": "0b6f7c1e-3d2a-4f5b-9a8c-1d2e3f4a5b6c",
"url": "https://vertracloud.app/share/xK3mP9qLwT2vN8rY",
"expires_at": "2026-10-15T12:00:00.000Z",
"max_downloads": 10,
"remaining_downloads": 10,
"has_password": false,
"object_is_public": false,
"created_at": "2026-10-14T12:00:00.000Z"
}
]
}
Shares
List Share Links
Lists the share links of the account, or only those of one object.
GET
/
v1
/
shares
List Share Links
curl --request GET \
--url https://blob.vertracloud.app/v1/sharesimport requests
url = "https://blob.vertracloud.app/v1/shares"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://blob.vertracloud.app/v1/shares', 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/shares",
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/shares"
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/shares")
.asString();require 'uri'
require 'net/http'
url = URI("https://blob.vertracloud.app/v1/shares")
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": "3e4f5a6b-7c8d-4e9f-a0b1-c2d3e4f5a6b7",
"object_id": "0b6f7c1e-3d2a-4f5b-9a8c-1d2e3f4a5b6c",
"url": "https://vertracloud.app/share/xK3mP9qLwT2vN8rY",
"expires_at": "2026-10-15T12:00:00.000Z",
"max_downloads": 10,
"remaining_downloads": 10,
"has_password": false,
"object_is_public": false,
"created_at": "2026-10-14T12:00:00.000Z"
}
]
}
Lists the share links of the account, newest first. Pass
object_id to list only the shares of one object. Revoked, expired and exhausted shares (no downloads left) are not listed.
Scope: blob:read.
string
Only the shares of this object.
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/shares?object_id=0b6f7c1e-3d2a-4f5b-9a8c-1d2e3f4a5b6c" \
-H "Authorization: Bearer $VERTRA_API_KEY"
Response
object[]
The share links.
Show properties
Show properties
string
Share ID. Use it to revoke the share.
string
The object the share gives access to.
string
Share page URL. Send it to whoever should download the file.
string
When the share stops working, as an ISO 8601 timestamp.
number | null
Download limit.
null means no limit.number | null
Downloads left.
null when there is no limit.boolean
Whether the share asks for a password.
boolean
true when the object is public. A public object is reachable by its URL, so the share doesn’t protect it.string
ISO 8601 creation time.
{
"response": [
{
"id": "3e4f5a6b-7c8d-4e9f-a0b1-c2d3e4f5a6b7",
"object_id": "0b6f7c1e-3d2a-4f5b-9a8c-1d2e3f4a5b6c",
"url": "https://vertracloud.app/share/xK3mP9qLwT2vN8rY",
"expires_at": "2026-10-15T12:00:00.000Z",
"max_downloads": 10,
"remaining_downloads": 10,
"has_password": false,
"object_is_public": false,
"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.VALIDATION_ERROR(400): A parameter or body field failed validation.details.pathnames the field.
{
"code": "AUTH_TOKEN_MISSING"
}
{
"code": "API_KEY_SCOPE_DENIED"
}
{
"code": "WORKSPACE_NOT_FOUND"
}
{
"code": "VALIDATION_ERROR"
}