Add Blob Folder to Stack
curl --request POST \
--url https://api.vertracloud.app/v1/stacks/{stack_id}/blob \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prefix": "<string>",
"visibility": "<string>",
"bindings": [
{}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({prefix: '<string>', visibility: '<string>', bindings: [{}]})
};
fetch('https://api.vertracloud.app/v1/stacks/{stack_id}/blob', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/stacks/{stack_id}/blob"
payload = {
"prefix": "<string>",
"visibility": "<string>",
"bindings": [{}]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/stacks/{stack_id}/blob"
payload := strings.NewReader("{\n \"prefix\": \"<string>\",\n \"visibility\": \"<string>\",\n \"bindings\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"response": {
"stack": {},
"blob": {},
"restart_required": true,
"apps_to_restart": [
"<string>"
]
}
}Blob
Add Blob Folder to Stack
Adds a folder of your Blob Storage to a stack, with a managed key restricted to it and variables injected into your applications.
POST
/
v1
/
stacks
/
{stack_id}
/
blob
Add Blob Folder to Stack
curl --request POST \
--url https://api.vertracloud.app/v1/stacks/{stack_id}/blob \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prefix": "<string>",
"visibility": "<string>",
"bindings": [
{}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({prefix: '<string>', visibility: '<string>', bindings: [{}]})
};
fetch('https://api.vertracloud.app/v1/stacks/{stack_id}/blob', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/stacks/{stack_id}/blob"
payload = {
"prefix": "<string>",
"visibility": "<string>",
"bindings": [{}]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/stacks/{stack_id}/blob"
payload := strings.NewReader("{\n \"prefix\": \"<string>\",\n \"visibility\": \"<string>\",\n \"bindings\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"response": {
"stack": {},
"blob": {},
"restart_required": true,
"apps_to_restart": [
"<string>"
]
}
}Adds a folder of your Blob Storage to the stack. The platform creates an API key restricted to that folder, keeps it in the stack, and injects the S3 connection variables into the applications you choose. The key is managed by the platform: it never shows its secret, and it is revoked when the Blob folder leaves the stack or the stack is dissolved or deleted. The files are kept unless you ask to delete them (see Remove Stack Member and Delete Stack).
The plan must include Blob Storage. Needs the
stacks:write and blob:write scopes when called with an API key.
string
required
The stack ID.
string
The workspace the stack belongs to, when you act on it as the workspace owner.
string
The folder of the Blob, ending in
/. Without it, the platform picks a folder named after the stack, under stacks/. A folder with files of yours, or one already used by a stack, cannot be chosen.string
default:"private"
private or public.object[]
The applications to connect it to. Each item has
app_id and an optional env_map (see Create Stack Connection).Response
object
Errors
| Status | Code | When |
|---|---|---|
| 409 | STACK_BLOB_PREFIX_TAKEN | The folder is already used by a Blob folder of a stack, or has files. |
| 400 | VALIDATION_ERROR | The prefix is not valid. |
| 403 | BLOB_NAMESPACE_SUSPENDED | Blob Storage is suspended for the account. |
| 403 | PLAN_RESTRICTED_FEATURE | The plan does not include Blob Storage. |
| 403 | WORKSPACE_OWNER_ONLY | You are a workspace member, not the owner. |
| 404 | STACK_NOT_FOUND | The stack does not exist or belongs to another account. |
Last modified on October 28, 2026